|
Umstieg von Postgres zu Informix
Vergleich und Hinweise zur Migration
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
|
Informix |
Postgres |
Hersteller |
IBM |
Postgres Development Group |
Preis |
Hoch |
Kostenlos |
Bezugsquellen |
IBM, Distributoren |
Download, Linux-Distributionen |
Lizenz |
Kommerziell (CPU- oder Nutzerabhängig) |
LGPL |
|
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) |
|
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 |
|
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) |
Ja (Umgebungsvariablen) |
Natural Language Support |
Integriert |
Integriert |
Datenbankschema |
Dbschema ... |
Pg_dump –s ... |
|
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] |
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 |
|
|
|
|
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 |
|
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 |
|
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 unique |
select
unique
* 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) = |
update tmp_stat1 set |
Substrings |
T.sort_fb
[1,2]
!= "ZZ" |
substring
(T.sort_fb ,1,2)!='ZZ' |
Konvertierung von Typen |
select distinct sort_fb,'ZZZZ',30, 'Summe '||sort_fb Bei Vergleich von INT zu String wird automatisch konvertiert |
Grouping und Sortieren mit zusammengesetzten Strings: Die Texte müssen ein Casting
durchlaufen Bei Vergleich von INT zu String wird (ab Postgres 8.3) nicht automatisch konvertiert |
|
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: |
in Prozeduren: |
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()
|
Variablendeklaraton in Funktionen |
DEFINE
p_matrikel_nr integer; |
DECLARE
|
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) |
|
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 |
|
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 |
|
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 |