'Matritzen' mit verschiedenen Zeilenlängen

Hallo, ich suche

eine möglichst Platz- und Zugriffszeitsparende
Möglichkeit, dynamisch Werte (z.B. integer) in
einem beliebig großen (x,y)-Gitter abzulegen.

Die Koordinaten ein neuer (x,y)-Wert kommt nur
dann dazu, wenn schon (x-1,y) existiert (Zeilenverlängerung)
oder es kann (0,y+1) hinzukommen, falls (0,y) schon
existiert (schon allokiert wurde).

Für Mathematiker:
Einfach ausgedrückt suche ich eine topologisch
homöomorphe Triangulation eines N-Dimensionalen
Kartesischen Produktes aus Fock-Räumen, wobei
„N“ wiederum ein Element eines Fock-Raumes ist.

Beispiel:
Ich will bei einem gegeben Text zwei
Änderungen durchführen können:

  1. Anhängen eines Zeichens ans Ende einer Zeile.
  2. Anhängen einer neuen Zeile ans Ende des
    Textes, bestehend aus einem einzigen Zeichen.

Das Problem bei der üblichen Speicherung ist,
dass, wenn ich irgendwo in der mitte des
Textes ein Zeichen einfügen will, muss ich alles,
was dahinter kommt, um ein Zeichen shiften.
Dieses shiften will ich vermeiden.

Speichere ich den Text in einer Matrix mit
Spaltenzahl gleich maximaler Zeilenlänge gibts
zwei Probleme: 1. Wenn die längste Zeile um
eins verlängert wird, 2. ich verschwende
ganz arg viel Speicherplatz, wenn die
Zeilenlängen insgesamt sehr unterschiedlich sind.

Hat jemand schon mal von so einem Problem gehört?

Gruss, Marco

Hi Marco,
das ist das Problem jeder Datenbank.
In modernen, relationalen Datenbanken ist das Problem mit einigen Programmieraufwand so weit gelöst, daß Du nichts davon bemerkst.
Warum willst Du Oracle neu schreiben? Verwende es doch einfach! :wink:

Gruß, Rainer

Hi Marco,
das ist das Problem jeder Datenbank.
In modernen, relationalen Datenbanken ist das Problem mit
einigen Programmieraufwand so weit gelöst, daß Du nichts davon
bemerkst.
Warum willst Du Oracle neu schreiben? Verwende es doch
einfach! :wink:

Es gibt da noch eine kleine Nebenbedingung…
Der Quellcode sollte bearbeitbar sein und
größenordnungsmäßig auf eine Din-A4-Seite passen,
also nix mit Oracle :frowning:

Gruss, Marco

Hi Marco,

Es gibt da noch eine kleine Nebenbedingung…
Der Quellcode sollte bearbeitbar sein und
größenordnungsmäßig auf eine Din-A4-Seite passen,
also nix mit Oracle :frowning:

ne, dann wird das mit Oracle wohl nichts, das ist ein wenig größer. :wink:
Unter den Bedingungen komme ich Dir halt mal mit meiner Vorstellung einer selbstgebauten ‚Datenbank‘. Eventuell ist da ja etwas dabei, was Dir eine Anregung liefert.

Ich würde in dem Fall die Daten unabhängig von einem Filesystem auf einen Datenträger schreiben (eine Partition, die für nichts anderes genutzt wird?) und in Schlüsselverzeichnissen die Adressen verwalten, an denen die Daten zu finden sind. Wenn die Schlüsselverzeichnisse nicht komplett in einer Datei stehen bist Du nahe an der Engine von DBase. Nachteil: gelegentlich (bei DBase wohl immer beim Verlassen) muß ein Reorg durchgeführt werden, sonst nehmen die gelöschten Datensätze zu viel Platz weg.
Damit kannst Du aber Datenbanken ohne feste Feldlänge realisieren, Access kann das nicht. :wink: Schneller als Access ist so etwas auch.

Da hast Du Dir aber etwas vorgenommen!

Gruß, Rainer
PS. Ich kann immer noch nur VB6. :wink: Mit Quellcodes werde ich Dir nicht helfen können.