2 Fragen: Autowert und Datenbankgröße (Komprimierung)

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

AndreasJBittner
*****
Beiträge: 473
Registriert: Fr, 09.10.2009 16:44
Wohnort: Bielefeld
Kontaktdaten:

Re: 2 Fragen: Autowert und Datenbankgröße (Komprimierung)

Beitrag von AndreasJBittner »

Hallo Andra,

die Autoincrement-Werte werden in RDBS in sog. sequences definiert, in Oracle zB legst Du für eine sequence einen Start-, Inkrement- und Endwert fest, die DB guckt dann DORT immer nach, welcher Wert als nächstes zur Verfügung steht, deshalb wird beim Löschen eines Datensatzes eben der nächste freie Wert aus der sequence genommen, die bekommt nämlich nicht mit, daß eine ID wieder frei geworden ist. Das Einfachste ist, Du ignorierst dieses Verhalten, da mit 2^32 der Zahlenbereich groß genug sein sollte. Du müßtest ja *immer* sicherstellen, daß nur der letzte Datensatz gelöscht wird, wenn Du nämlich "mittendrin" einen löscht und die sequence auf diesen Wert zurücksetzt, würde es beim übernächsten und den weiteren Datensätzen immer zu einem Fehler kommen.

Ich vermute Du beziehst Dich auf die interne OOo-Base, die immer größer wird. Kann es sein, daß Du halt immer mehr Daten in Deiner DB hast? Wenn Du die odb mal in zip änderst und mal reinschaust, wirst Du feststellen, daß dort die Tabellendefinitionen als SQL abgelegt sind und die Daten als INSERT-Statements - daher dürfte eigentlich nur durch mehr Daten die Dateigröße wachsen, weil gelöschte Tabellen und Datensätze ja nicht mehr mit abgelegt werden müssen.

HTH, Grüße
Andreas
LO 4.3
AMD Athlon 64 3700+, 2.21 GHz, 4 GB RAM, Win XP SP3
iMac 2 GHz, 16 GB RAM/MacBookPro, 8 GB RAM, Mac OS X 10.9.5
Intel Core2 Quad CPU Q6600 @ 2,4 GHz, 4 GB RAM, Suse 13.2

MySQL 5.1: Pentium III, 666 MHz, 512 MB, Suse 12.1
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: 2 Fragen: Autowert und Datenbankgröße (Komprimierung)

Beitrag von Barlee »

Schließe mich den Ausführungen von Andreas an.
Betrachte den Primärschlüssel als das, was er ist. Er dient nicht der Ästhetik, sondern soll "nur" einen Datensatz als eindeutig kennzeichnen.

Zur Dateigröße: Probiere CHECKPOINT DEFRAG unter Extras/SQL

Gruß Barlee
AndreasJBittner
*****
Beiträge: 473
Registriert: Fr, 09.10.2009 16:44
Wohnort: Bielefeld
Kontaktdaten:

Re: 2 Fragen: Autowert und Datenbankgröße (Komprimierung)

Beitrag von AndreasJBittner »

Hallo Andra,

für den Anspruch würde ich einfach eine weitere Spalte als lfdNr definieren und separat setzen, dann ist es egal, ob die ID Lücken aufweist. Aber wie paßt denn Dein Datensatz löschen zu einer konsistenten Buchführung? ;-)
Vielleicht arbeitest Du mit zwei Tabellen, einer, in der Datensätze noch gelöscht werden können und einer, in der der abschließend bearbeitete Datensatz übertragen wird. Dann kann in der zweiten Tabelle die ID auch als laufende Nummer fungieren. Im Übrigen kannst Du ja auch die Spalte lfdNr als autowert definieren, nur eben nicht als PRIMARY KEY (ID ist immer autowert, not null und primary key).

Viele Grüße
Andreas
LO 4.3
AMD Athlon 64 3700+, 2.21 GHz, 4 GB RAM, Win XP SP3
iMac 2 GHz, 16 GB RAM/MacBookPro, 8 GB RAM, Mac OS X 10.9.5
Intel Core2 Quad CPU Q6600 @ 2,4 GHz, 4 GB RAM, Suse 13.2

MySQL 5.1: Pentium III, 666 MHz, 512 MB, Suse 12.1
Antworten