Vergleich Informix-Postgres

w w w . M e m T e x t . d e

Memtext.de

 

 

Umstieg von Postgres zu Informix

Vergleich und Hinweise zur Migration

 

Inhaltsverzeichnis

1Der Einstieg       

1.1Beschaffung       

1.2Installation       

2Administration       

2.1Einrichten des Datenbankservers       

2.2Verwaltung einzelner Datenbanken       

2.3Import / Export / Backup       

3Die tägliche Arbeit       

3.1Client-Software       

3.2Performance       

3.3Standard-SQL-Unterstützung        

3.4Fortgeschrittenes SQL        

3.5Dokumentation und Support       

4Entwicklung       

4.1Erweiterbarkeit       

4.2Migrationsaufwand       

 

In diesem Dokument wollen wir ein paar Unterschiede zwischen PostgreSQL und Informix aufzeigen und unsere Erfahrungen bei der Migration berichten.

Das Dokument soll "work-in-progress" abbilden und wird ständig aktualisiert und erweitert. So soll es für interessierte Hochschulen als Nachschlagewerk dienen.

Langfristig wollen wir Erfahrungen anderer Hochschulen einbinden und so ein Forum für den Austausch in diesem wichtigen Projekt bieten.

Für SuperX ist es ein wichtiger Schritt, deshalb wird dieses Dokument unter http://postgres.superx-projekt.de fortgeschrieben

1 Der Einstieg

1.1 Beschaffung

 

Informix

Postgres

Hersteller

IBM

Postgres Development Group

Preis

Hoch

Kostenlos

Bezugsquellen

IBM, Distributoren

Download, Linux-Distributionen

Lizenz

Kommerziell (CPU- oder Nutzerabhängig)

LGPL


1.2 Installation

 

Informix

Postgres

Betriebssystem

UNIX, Win dows Server

UNIX,   Win dows

Installationsfiles

Binär

Quellcode, Binär (unter Linux in Distribution enthalten)

Installationsaufwand

Gering

Gering

Update-Rhythmus

Lang (Jahre)

Kurz (Monate)

 

 

 

2 Administration

2.1 Einrichten des Datenbankservers

 

Informix

Postgres

DB-Speicher

Cooked File, Partition

Dateisystem

Logging

Cooked File, Partition

Dateisystem

Steuerung

Dialogisch (onmonitor), Scriptgesteuert (oninit, onmode), Conf-Dateien (onconfig)

Conf-Dateien (postgres.conf), Scriptgesteuert (postmaster)

TCP-Netzzugriff

Conf-Datei (sqlhosts)

Conf-Datei (pg_hba.conf)

Verschlüsselung möglich

Ja

Ja

IP-Nummern-Beschänkung

Ja

Ja

Start des DB-Servers

Oninit

Postmaster

Mehrere Instanzen eines Servers

Onconfig

UNIX-Prozeß

Mehrere Versionen auf einem Rechner

Ja

Ja

Transaktionen

Ja

Ja (aber: nicht abschaltbar)

Mehrprozessor

Ja

Ja

 

2.2 Verwaltung einzelner Datenbanken

 

Informix

Postgres

Befehle

Dialogisch (dbaccess), SQL, Shellscript

SQL, Shellscript

Vorlagen (Templates)

Nein

Ja

Import

Dbimport, SQL-Script

Pg_restore, SQL-Script

Benutzer

Nutzerkennung im System (UNIX-Kennung)

Nutzerkennung systemunabhängig (createuser)

Benutzerrechte

DBA, select, update, delete, insert, connect

(connect), select, update, insert, delete

Skalierbarkeit d. Größe

Flexibel (DBSPACE)

Flexibel (Dateisystem)

Skalierbarkeit d. Zugriffe

Flexibel (Shared Memory, Row-level-Locking)

Flexibel, aber Betriebssystemabhängig

Lokalisierung

Ja (Umgebungsvariablen)
DBDATE, DBMONEY

Ja (Umgebungsvariablen)
PGDATESTYLE, PGTZ

Natural Language Support

Integriert

Integriert

Datenbankschema

Dbschema ...

Pg_dump –s ...

 

 

2.3 Import / Export / Backup

 

Informix

Postgres

Befehle

Shellscript (dbexport, dbimport)

Shellscript (pg_dump, pg_restore)

Backup

Dateisystem, dbexport einzelner Datenbanken

Dateisystem, pg_dumpall

Laden von Tabellen

Load from <<unl-Datei>> insert into <<tabname>> [einzelne Felder optional]
dbload

copy <<tabname>> from <<unl-Datei>>...

Sichern von Tabellen

Unload to <<unl-Datei>> select [einzelne Felder optional] from <<tabname>>

copy <<tabname>> to <<unl-Datei>> ...

Laden einzelner Sätze

Analog

Analog

Sichern einzelner Sätze

Analog

Nein (Work-Around: select in temp.Tabelle)

Bandsicherung

Ja

Nein

 

 

 

 

 

3 Die tägliche Arbeit

3.1 Client-Software

 

Informix

Postgres

UNIX (Textmodus)

Dbaccess, isql

Psql

UNIX (Xfree)

ISA (Apache Server)

PGAdmin

Windows

ODBC, JDBC, Informix Client SDK

ODBC, JDBC, PGAdmin

Formulare

i sql

Pgaccess

Visuelle Query-Tools

Kommerziell

Pgaccess

Report-Tools

Textbasiert (isql)

Graphisch (Pgaccess); keine textbasierten Reportgeneratoren

3.2 Performance

 

Informix

Postgres

Optimierer

Update statistics

Vacuum analyze

RAM-Zuweisung

Shared Memory

Postmaster –B

Import / Export

Schnell

Schnell

Hohe Netzlast

Gut

Gut

SQL-Transaktionen

Gut

Gut

Row-level Locking

Ja

Ja

Select ohne Indizes

Okay

Schlecht

Tuning

Extents, SHM, Fragments

Betriebssystemabhängig

 

 

 

3.3 Standard-SQL-Unterstützung

 

Informix

Postgres

SQL 92

Ja

Ja

Datentypen

SQL 92, Blob

SQL 92, Blob

Logging abschalten

create table .. with no log

--

String-Delimiter

select * from tabelle where column = " eins " ;

Doppelte Hochkommata werden durch einfache ersetzt
select * from tabelle where column = ' eins ' ;

select unique

select unique * from tabelle;
select distinct * from tabelle;

select distinct * from tabelle;

Stringvergleiche

select * from tabelle where column matches ''*a*'';

select * from tabelle where column like '%a%';

select * from tabelle where column like '%a%';

Erzeugung temporärer Tabellen

select * from sos_studenten into temp tmp_studenten;

select * into temporary tmp_studenten from sos_studenten;

Update mehrerer Spalten gleichzeitig

update tmp_stat1 set (w_1fs,m_1fs) =
((     select faktor*w_1fs from sos_gewichtung G
    where ...),
    (select faktor*m_1fs from sos_gewichtung G where ...));

update tmp_stat1 set
w_1fs
=G.faktor* tmp_stat1. w1fs ,
m_1fs
=G.faktor* tmp_stat1. m_1fs
from sos_gewichtung G
where ...
;

Substrings

T.sort_fb [1,2] != "ZZ"
substring(sort_fb from 1 for 2)

substring (T.sort_fb ,1,2)!='ZZ'
substring(sort_fb from 1 for 2)

Konvertierung von Typen

select distinct sort_fb,'ZZZZ',30, 'Summe '||sort_fb
from tmp_dan_stat2 T,lehreinheit_fb LFB

Bei Vergleich von INT zu String wird automatisch konvertiert

Grouping und Sortieren mit zusammengesetzten Strings: Die Texte müssen ein Casting   durchlaufen
select distinct sort_fb,'ZZZZ'::Text,30,
( 'Summe '||sort_fb ) ::text
from tmp_dan_stat2 T,lehreinheit_fb LFB

Bei Vergleich von INT zu String wird (ab Postgres 8.3) nicht automatisch konvertiert

3.4 Fortgeschrittenes SQL

 

Informix

Postgres

Suche in Blobs

Datablades

Nein

DB-Architektur

Relational

Objektrelationale Struktur

Typkonversion

Meist automatisch

Funktionen, Casting

Outer Joins

Ja

Ja

Unterselects

Ja

Ja

Cursor

in Prozeduren:
foreach select...

in Prozeduren:
for recordset in select ...

Views

Ja

Ja (aber keine Updates möglich)

Tabellenänderung

Sehr flexibel ( a lter table)

Sehr flexibel (alter table)

Indizes

Btree u.a.

Btree u.a.

Recordset-Rückgabe in Funktionen

Ja

Ab 7.3

Deklaration von Funktionen

CREATE PROCEDURE superx.sp_sosstatistik ()
CREATE FUNCTION sp_sosstatistik()

CREATE FUNCTION sp_sosstatistik()
(Den Befehl CREATE PROCEDURE gibt es nicht in Postgres)

Variablendeklaraton in Funktionen

DEFINE p_matrikel_nr integer;
DEFINE p_start_sos_sem smallint;
DEFINE p_sem_der_pruefung smallint;

DECLARE
    p_matrikel_nr integer;
    p_start_sos_sem smallint;

Wertezuweisungen von Variablen

LET p_start_sos_sem = 19881;

p_start_sos_sem := 19881;

Verknüpfte Tabellen

Synonyme

pg_link Contrib-Modul (aber schlechte Performance)

3.5 Dokumentation und Support

 

Informix

Postgres

Sprache

Meist Englisch

Meist Englisch

Bezug

PDF-Download, gedruckte Bücher im Lieferumfang

HTML-Download, DocBook-SGML-Download

Zusätzliche Dokumentation

Bücher (aber: keine Neuerscheinung seit 2000)

Bücher (Sehr aktuell)

Lernsoftware

Keine

Wenig (nur Englisch)

Newsgroups / Foren

Wenig

Viele (Aber: nur Engl.; langsamer Server, unüberschaubar, verwirrende Versionsvielfalt)

Support

IBM, Drittanbieter

Wenig in Deutschland

 

 

4 Entwicklung

4.1 Erweiterbarkeit

 

Informix

Postgres

Trigger / Prozeduren

Ja

Ja

Sprachen

SQL, SP-Language, 4GL, Java

SQL, PLPGSQL, Perl, TCL, Java, C, Python

Eigene Typen

?

Ja (C-Funktionen)

Drittanbieter

Wenig

viele OpenSource-Erweiterungen

Multidimensionale Dben

Metacube

Nein

 

4.2 Migrationsaufwand

 

Weg

Aufwand

Tabellenimport / Export

Dbexport, ODBC-Transfer, JDBC-Transfer

Gering

Formulare

Neuentwicklung

Hoch

Funktionen

Umschreiben von SP-Language nach PLPGSQL

Hoch

Reports

Neuentwicklung

Hoch

Vorhandene ODBC-/ JDBC-Clients

Einfache Änderung der Quelle

Gering

Unser Fazit

Es geht!

Mittel