Datenbank-, Tabellenstruktur für laufende Aufzeichnungen evtl. in einer SQLite Datenbank

  • Antworten:10
  • Bentwortet
nut
  • Forum-Beiträge: 5

31.05.2011, 17:25:45 via Website

Hallo Datenbank Spezialisten,

ich arbeite zwar oft mit SQL und lege Tabellen in MySql oder SQLite an, bin aber kein Spezialist wenn es um die Optimierung geht.

Wenn ich hier nicht richtig bin sagt mir bitte bescheid, Danke!

Datenstruktur aktuell:
- 12 -44 Messpunkte werden alle 10 Minuten gelesen und in Binärdateien auf dem Filesystem abgelegt, was nicht wirklich hochperformant ist.
- Die einzelnen Werte sind immer Aufsummierungen der vorherigen.
- Die Aufzeichnung läuft Tagsüber also ca. 12 Stunden am Tag über Jahre.

Abfrage der Daten:
- Einzeldaten oder Summendaten von bestimmten Messpunkten
- Tagesdaten nach Datum
- Monatsdaten
- Jahresdaten
- Vergleiche von Tages-, Monats- oder Jahresdaten

Nun frage ich mich wie lege ich eine sinnvolle Datenbank-, Tabellenstruktur am liebsten in SQLite an?
Wie teile ich die Daten am performantesten in Tabellen auf?
Ich weiß um den großen Einfluss von Indizierung, ich komme aber auf keine Muster welches ich anwenden kann. Mir fehlt einfach das Spezialwissen.
Die dauerhafte Aufzeichnung von Daten kommt bestimmt oft vor, kennt jemand ein Beispiel, das mir helfen könnte?

Vielen Dank im Voraus!

nut

Antworten
Gelöschter Account
  • Forum-Beiträge: 294

01.06.2011, 00:07:13 via Website

Zwei Nachfragen:

1.) Gibt es noch Details (z.B. zu den Messpunkten)? Dies würde z.B. eine Messpunkt Tabelle erfordern. Ansonsten reicht eine Tabelle für die Werte.

2.) Mich stört das Aufsummieren. Besser wäre es wenn man die Zwischenwerte hätte. Das Bilden der Summe kann man der Datenbank überlassen - das kann die ganz gut. Mit den Zwischenwerten könntest Du dann nämlich auch eine schöne Entwicklung der Werte als Chart ausgeben.


So aus der Hüfte:

Tabelle messpunkt
==============
_id integer primary key
name text
aktiv char(1) --> J/N (ein Messpunkt wird nie gelöscht, sonst verliert man bei on delete cascade die zugehörigen Werte)
... weitere Details

Tabelle messwert
==============
messpunkt integer foreign key references messpunkt(_id)
timestamp integer --> alternativ (jahr integer, monat integer, tag integer, ...)
messwert real --> am Besten nur die Differenz zwischen dem vorherigen Wert und dem aktuellen)
... weitere Details

Index
====
1.) messpunkt
2.) timestamp

* Auf zusammengesetzte Indexe verzichte ich bei den Android Devices. Die Performance geht dann etwas runter aber es spart Internal Memory - und das ist meist knapp bemessen. Es sei denn die DB wird auf der SD-Karte angelegt (die ist aber meist langsamer).

* In den Timestamp kommen die millis. Wenn Du dann aber nach einem Monat suchst muss die DB immer transformieren. In dem Fall würde ich schon fast zum Aufklappen der Datumsstruktur tendieren. Dann muss natürlich auch der Index aufgeklappt werden:

1) messpunkt
2.) jahr
3.) monat (nur wenn es eine Suche nach Monat ohne Tag und ohne Messpunkt gibt).

Mit diesen Angaben kannst Du dann alles machen. Nach Messpunkten gruppieren, nach Jahren, Monaten - alles was das Herz begehrt.

Wenn Du die Aufsummierungen in den Messwerten hast wird es unter Umständen "ätzend". Der Tages-, Monats- oder Jahres-Höchstwert ist dann immer nur der höchste Timetamp dieses Bereiches (und somit nur eine Zeile) aber die Entwicklung über einen Tag, Monat, Jahr erfordert das Joinen mit sich selbst. Also wenn es eben geht nimm den Zwischenwert auf und nicht die Aufsummierung.

Was war noch mal Deine Frage ;-)

Gruß
Harald

— geändert am 01.06.2011, 00:18:09

nut

Antworten
nut
  • Forum-Beiträge: 5

01.06.2011, 12:04:35 via Website

Hallo Harald,
danke für Deine schnelle Antwort!

Admin Service Limited


Zwei Nachfragen:

1.) Gibt es noch Details (z.B. zu den Messpunkten)? Dies würde z.B. eine Messpunkt Tabelle erfordern. Ansonsten reicht eine Tabelle für die Werte.

Beispiel der Messpunkte, bzw. deren Werte:
"arrayMesspunkt_WertA_1_44":[
[3996600, ... 4030793,4030807], (Array der SummenWerte alle 10 Minuten, von 1-108 <-> 5:00-23:00)
[3990900, ... 4025229,4025667],

...

[3990900, ... 4025124,4025253]
](Array der Messpunkte von 1-44)

Es gibt 5 Wertetypen pro Messpunkt die abgefragt werden können, zB: Wert A-E. In einer Tabelle währen das wohl dann Spalten?!


Admin Service Limited


2.) Mich stört das Aufsummieren. Besser wäre es wenn man die Zwischenwerte hätte. Das Bilden der Summe kann man der Datenbank überlassen - das kann die ganz gut. Mit den Zwischenwerten könntest Du dann nämlich auch eine schöne Entwicklung der Werte als Chart ausgeben.

Ja, das Aufsummieren stört mich auch, leider kommen die Daten derzeit von einer schon bestehenden Schnittstelle.
Ich möchte aber eigene Messwerte aus eigenen Messpunkten hinzufügen, daher möchte ich nur bedingt auf die aktuelle Schnittstelle Rücksicht nehmen.
Es ist zwar eine Krücke, aber wenn die Daten alle 10 Minuten in der Datenbank landen, werde ich wohl die Zwischenwerte gleich berechnen und mit diesen weiterarbeiten.

Die Daten werden vornehmlich in Charts ausgegeben und verglichen etc. Ich berechne die Werte derzeit recht (Rechenpower)aufwändig in Echtzeit.


Admin Service Limited


So aus der Hüfte:

Tabelle messpunkt
==============
_id integer primary key
name text
aktiv char(1) --> J/N (ein Messpunkt wird nie gelöscht, sonst verliert man bei on delete cascade die zugehörigen Werte)
... weitere Details

...ok, Messpunkte werden nur deaktiviert aber nie gelöscht, klar sonst sind die Daten ohne Bezug.

Admin Service Limited


Tabelle messwert
==============
messpunkt integer foreign key references messpunkt(_id)
timestamp integer --> alternativ (jahr integer, monat integer, tag integer, ...)
messwert real --> am Besten nur die Differenz zwischen dem vorherigen Wert und dem aktuellen)
... weitere Details

Index
====
1.) messpunkt
2.) timestamp

* Auf zusammengesetzte Indexe verzichte ich bei den Android Devices. Die Performance geht dann etwas runter aber es spart Internal Memory - und das ist meist knapp bemessen. Es sei denn die DB wird auf der SD-Karte angelegt (die ist aber meist langsamer).

Derzeit läuft das ganze noch auf einem embeded System bzw. in einer VM. aber das Ziel ist alles auf Android Tabletts zu bringen. Die Charts werden als SVG berechnet.

Admin Service Limited


* In den Timestamp kommen die millis. Wenn Du dann aber nach einem Monat suchst muss die DB immer transformieren. In dem Fall würde ich schon fast zum Aufklappen der Datumsstruktur tendieren. Dann muss natürlich auch der Index aufgeklappt werden:

1) messpunkt
2.) jahr
3.) monat (nur wenn es eine Suche nach Monat ohne Tag und ohne Messpunkt gibt).

Ok, jetzt stosse ich an die Grenzen meines Halbwissens...

Aufklappen: statt dem Timestamp in millis lieber Jahr/Monat/Tag als einzelne Index-Spalten, sonst muss ich ewig den Timestamp auswerten?!

Soweit glaube ich verstanden.

zu 3. ja, es gibt die Suche nach Monat ohne Tag, aber ohne Messpunkt? Dann krieg ich ja keine Werte, oder?!

Da ist aber der Punkt an dem ich nicht verstehe wie ich die IndexTabellen anlege (oder macht das die DB über autoindex?) und dann, vor allem möglichst hochperformant meine SQL-Abfragen schreibe.
Auf was muss ich achten, wie beziehe ich die Indizes richtig in meine SQL-Abfragen ein?

Die am meisten gemachte Abfrage sind Tageswerte in der Historie, wie im obigen Beispiel: "arrayMesspunkt_WertA_1_44".

Da ich noch nicht ganz klar komme mit den Indexabfragen, fehlt mir noch die richtige Strategie für die Tabellenstruktur, ich versuche es trotzdem:
1. Tabelle Messpunkt: wie von Dir beschrieben.
2. Tabelle Messwert: In einem Messpunkt-Datensatz/Zeile finden sich dann die Indizes ( Messpunkt, Jahr, Monat, Tag) plus die Messwerte real (Differenz) A-E

Macht es Sinn für jedes Jahr eine eigene Messwert-Tabelle zu erzeugen? Es sind rund 40.000 - 1.7Mio Zeilen mit 200.000 - 8.8Mio Messwerten Pro Jahr.
Oder wie soll ich mit der (Un-)Menge Datenbank-Technisch umgehen?

Admin Service Limited


Mit diesen Angaben kannst Du dann alles machen. Nach Messpunkten gruppieren, nach Jahren, Monaten - alles was das Herz begehrt.

Wenn Du die Aufsummierungen in den Messwerten hast wird es unter Umständen "ätzend". Der Tages-, Monats- oder Jahres-Höchstwert ist dann immer nur der höchste Timetamp dieses Bereiches (und somit nur eine Zeile) aber die Entwicklung über einen Tag, Monat, Jahr erfordert das Joinen mit sich selbst. Also wenn es eben geht nimm den Zwischenwert auf und nicht die Aufsummierung.

Ich werde die Zwischenwerte beim speichern berechnen, mal sehen, evtl. geht das ja über einen TRIGGER.
Was meinst Du, sollte ich die Aufsummierung dann verwerfen, oder mit abspeichern?

Admin Service Limited


Was war noch mal Deine Frage ;-)

Darf ich Dir noch ein paar Fragen stellen? ;-)

Admin Service Limited

Gruß
Harald

Du hast mir schon mal den Weg gezeigt.

Vielen Dank
Helmut

— geändert am 01.06.2011, 12:08:56

Antworten
Gelöschter Account
  • Forum-Beiträge: 294

01.06.2011, 13:21:19 via Website

Ich habe mir den Text nicht mehr in Gänze durchgelesen. Mit Halbwissen an ein solches Projekt zu gehen ist einfach nur leichtsinnig.


Ein wenig "Ganzwissen":

* Du beginnst jetzt - also mach es richtig. Verstöße gegen die Normalformen würde ich nicht jetzt schon in Kauf nehmen (Arraybildung in Tabellen, etc.).

* Also Tabelle Messpunkt und Tabelle Messwert. Messpunkt ist quasi statisch und nur PK Lieferant. Messwert ist das Sammelbecken aller Werte. Pro Zeile ein -Messpunkt, ein Zeitstempel, ein Messwert und das wars. Keine Kompromisse meinerseits hier.

* Was die Technik angeht - SQLite Doku lesen! PK im SQLite ist automatisch autoincrement wenn nicht in Spaltenliste beim Insert aufgeführt. Ob Du einen PK (_id) für Messwert benötigst bezweifle ich. Der FK ist der Messpunkt.

Beispiel:

create table messpunkt (id integer primary key, ...)
create table messwert (messpunkt integer references messpunkt (id) on delete cascade, zeitstempel integer, messwert integer, ...)
--create index messwert_messpunkt on messwert (messpunkt)
--create index messwert_ zeitstempel on messwert (zeitstempel)
create index messwert on messwert (messpunkt, zeitstempel)

Denk Dir das Ganze wie ein Spreadsheet:

* Du hast eine Messpunkt Tabelle in der diese Messpunkte beschrieben werden und den notwendigen PK liefern. Die ist quasi statisch.

* Du hast eine Messwert Tabelle in der die Dynamik abläuft. Dort wird eine Spalte für den Messpunkt, Spalten für die Zeit sowie eine Spalte für den Wert benötigt. Das ist alles. Arrays von Messwerten musst Du aufklappen und pro Messpunkt speichern.


Schlussbemerkung:

8,8 Millionen Zeilen? Meine bisher dickste Tabelle im GaCoMo auf einem Google Nexus One hat knapp eine Million Messpunkte (Koordinaten). Das geht noch so. Wie lange sollen Deine Kunden/Benutzer auf eine Antwort des Smartphone/Tablet warten dürfen?


Gruß
Harald

nut

Antworten
nut
  • Forum-Beiträge: 5

01.06.2011, 17:22:09 via Website

Erstmal vielen Dank für Deine ausführlichen Antworten und Geduld.

Es sind doch Vorüberlegungen um es richtig zu machen. Zudem handelt es sich NOCH um ein privates Projekt.

Und sorry für meinen arg zu langen Beitrag....

Admin Service Limited
Ich habe mir den Text nicht mehr in Gänze durchgelesen. Mit Halbwissen an ein solches Projekt zu gehen ist einfach nur leichtsinnig.


Ein wenig "Ganzwissen":

* Du beginnst jetzt - also mach es richtig. Verstöße gegen die Normalformen würde ich nicht jetzt schon in Kauf nehmen (Arraybildung in Tabellen, etc.).

* Also Tabelle Messpunkt und Tabelle Messwert. Messpunkt ist quasi statisch und nur PK Lieferant. Messwert ist das Sammelbecken aller Werte. Pro Zeile ein -Messpunkt, ein Zeitstempel, ein Messwert und das wars. Keine Kompromisse meinerseits hier.

* Was die Technik angeht - SQLite Doku lesen! PK im SQLite ist automatisch autoincrement wenn nicht in Spaltenliste beim Insert aufgeführt. Ob Du einen PK (_id) für Messwert benötigst bezweifle ich. Der FK ist der Messpunkt.

Beispiel:

create table messpunkt (id integer primary key, ...)
create table messwert (messpunkt integer references messpunkt (id) on delete cascade, zeitstempel integer, messwert integer, ...)
--create index messwert_messpunkt on messwert (messpunkt)
--create index messwert_ zeitstempel on messwert (zeitstempel)
create index messwert on messwert (messpunkt, zeitstempel)

Denk Dir das Ganze wie ein Spreadsheet:

* Du hast eine Messpunkt Tabelle in der diese Messpunkte beschrieben werden und den notwendigen PK liefern. Die ist quasi statisch.

* Du hast eine Messwert Tabelle in der die Dynamik abläuft. Dort wird eine Spalte für den Messpunkt, Spalten für die Zeit sowie eine Spalte für den Wert benötigt. Das ist alles. Arrays von Messwerten musst Du aufklappen und pro Messpunkt speichern.

Wie verhalte ich mich wenn ein Messpunkt_n mit Zeitstempel_x fünf Messwerte liefert?

...also pro Wert eine Tabelle, der FK ist der Messpunkt. Dachte nur, da die Spalten für die Zeit bei allen Messwert-Tabellen gleich sind wäre das eine vermeidbare Redundanz?!

Admin Service Limited


Schlussbemerkung:

8,8 Millionen Zeilen? Meine bisher dickste Tabelle im GaCoMo auf einem Google Nexus One hat knapp eine Million Messpunkte (Koordinaten). Das geht noch so. Wie lange sollen Deine Kunden/Benutzer auf eine Antwort des Smartphone/Tablet warten dürfen?

* 40.000 Messwerte/Jahr und Messpunkt (108 MessZeiten/Tag * 365 Tage)

* Mal Anzahl der maximalen Anzahl Messpunkte = 40.000 * 24 (44) = 960.000 (1.760.000) maximale Anzahl Zeilen pro Tabelle.

* Anzahl der Messwerte pro Messpunkt habe ich soeben auf 4 beschränkt.

* Hab nochmal überlegt und meine Maximalforderung für die Anzahl der Messpunkte korrigiert. 44 Messpunkte sind unrealistisch, das packt nur noch ein mega Multiprozessor-System.
Aktuell ist schon mächtig was los wenn die Daten von 12 Messpunkten gelesen und geschrieben werden müssen. Realistisch sind im Durchschnitt 3-6 Messpunkte.


Ich hätte bei zugegeben sehr seltenem Maximalausbau:

1 Tabelle Messpunkt (statisch) maximal 24 Zeilen

4 Tabellen Messwert mit maximal je 960.000 Zeilen

Admin Service Limited



Gruß
Harald

Vielen, vielen Dank nochmal
Helmut

Antworten
Gelöschter Account
  • Forum-Beiträge: 294

01.06.2011, 23:23:00 via Website

Einfach normalisieren: Wenn ein Messpunkt zum Zeitpunkt X 5 Messwerte liefert müssen diese doch unterschiedlichen Typs sein - das hatte ich bisher falsch verstanden.

Dann gesellt sich also noch eine Tabelle Messwerttyp hinzu (_id integer PK, ...)

Die Tabelle Messwert wird dann um diese Spalte erweitert (messpunkt integer FK, messwerttyp integer FK, zeitstempel integer, messwert integer)

Dieser neue FK bekommt dann auch einen eigenen Index spendiert.

Apropos Redundanzen: Der FK benötigt ein integer - der Zeitstempel, ebenfalls ein integer, ist dann also gleichzeitig PK und FK ;-) Wir kommen hier mit 3NF aus und lassen den Zeitstempel was er ist.

Gruß
Harald

— geändert am 01.06.2011, 23:34:14

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

02.06.2011, 00:37:01 via Website

Nabend,

möglicherweise wäre es zielführend, sich einmal zu überlegen wofür diese Datenbank optimiert werden soll. Für hauptsächlich lesende Zugriffe oder hauptsächlich schreibende Zugriffe bzw. eine Mischform.

Aus der Priorität ergeben sich dann weiterführende Schritte.

Ein Beispiel: Bei einer Datenbank, bei der es hauptsächlich darum geht Daten in vielen Schreiboperationen zu speichern, ohne diese Daten jedoch in anderen Applikationsteilen direkt (d.h. mit direkten Zugriff auf eben diese Datentabellen) wiederum einzulesen und auszuwerten, sollte keine oder zumindest nicht viele Indizies enthalten.
[Jeder Index einer Datentabelle verlangsamt den Schreibzugriff um ein vielfaches]

Gegenbeispiel: Bei einer Datenbank, die hauptsächlich für lesende Zugriffe mit vielen Leseoperationen und auswertenden Verknüpfungen gedacht ist, sollten möglichst viele Indizies gesetzt werden um die Zugriffszeiten zu minimieren.
[mglw. helfen hier auch funktionale Indizies (je nach DB-Typ)]

Bei einem System welches beide Seiten bedienen soll, wird es immer eine Kompromisslösung werden.

In dem hier vorliegenden Fall muss man sich überlegen, ob die Reaktionszeit der Applikation im schreibenden Modus einen krassen Gegensatz zu den für die Auswertung notwendigen Indizies und den damit einhergehenden Schreibverzögerungen rechtfertigt bzw. die für eine zeitgerechte Auswertung mglw. notwendigen Redundanzen für eine notwendige rasche Auswertung gerechtfertigt sind.

Normalisierung ist nicht immer das Universalheilmittel wollte ich nur zum Ausdruck gebracht haben.

Ich vermute, diese App könnte durchaus von einigen gängigen Data Warehouse Praktiken die eben mit Redundanzen, zugunsten einer erheblich verbesserten Auswertungszeit arbeiten, profitieren. Zumindest ist das mein Eindruck beim Überfliegen der hier getroffenen Überlegungen insbesondere in Hinblick auf die Anzahl der zu speichernden Datensätze.

Nur ein paar Überlegungen von mir .. nach groben Überfliegen der Anforderungen und Diskussion.

lg Voss

Antworten
nut
  • Forum-Beiträge: 5

02.06.2011, 10:24:14 via Website

Admin Service Limited
Einfach normalisieren: Wenn ein Messpunkt zum Zeitpunkt X 5 Messwerte liefert müssen diese doch unterschiedlichen Typs sein - das hatte ich bisher falsch verstanden.

Dann gesellt sich also noch eine Tabelle Messwerttyp hinzu (_id integer PK, ...)

Die Tabelle Messwert wird dann um diese Spalte erweitert (messpunkt integer FK, messwerttyp integer FK, zeitstempel integer, messwert integer)


Keine Frage 3NF ist da schon logisch und eindeutig. Die Indizes verstehe ich nun besser.

Ok, im Klartext alle Messwerte in eine Tabelle 4x 960.000 pro Jahr.
Aber ehrlich gesagt, das macht mir Angst.
Ist das denn noch skalierbar?
Es sind ja auch historische Werte von mehreren Jahren angedacht!

Nachdem ich den Beitrag von Jörg gelesen hatte habe ich mir das Lesen und Schreiben mal getrennt betrachtet.

Schreiben:
* Die Werte der Messpunkte werden alle 10 Minuten geschrieben. Da die Daten alle 3 Sekunden erfasst werden findet eine Vorverarbeitung statt.
* Es muss absolut sichergestellt sein, dass die erfassten Werte in die DB (derzeit Files) geschrieben werden. Schreiben hat Vorrang.
* Es gibt bisher maximal 24 Messpunkte mit je bis zu 4 oder 5 Werten (Typen)
* Die Wertetypen sollten im laufe der Zeit noch erweitert werden können.
* Bisher wird ein fester Tages-Zeitraum von 5:00 bis 23:00 Uhr erfasst.
* Der Zeitraum sollte sich im laufe der Zeit noch erweitert werden können.
* Geschrieben wird nur in einer Kernzeit die Nachtzeit wäre theoretisch für Organisation, Auswertung, Berechnung (max, min...) verwendbar.

Lesen:
* Auch wenn der Tag noch nicht beendet ist bildet das Chart immer den ganzen Tag ab derzeit (5:00 - 23:00)
* Selbiges gilt für Monat (1-31 Tage) und Jahr (1-12 Monate)
* Die WerteTypen werden zu 90% als Tages-/Monats-/Jahres-Auswertung gelesen, also in ganzen Reihen in die Charts gelesen.
* zu 99% ist die kleinste gelesene Einheit ein Tag.
Ausnahme von dieser Regel mit Zugriff auf die einzelnen Messwerte der Tage bildet zB. die seltene Auswertung:
An welchem Tag im Jahr hatte Messtyp X um 12:30 seinen höchsten Wert.
Das wird zwar derzeit nicht praktiziert, aber ausschließen will ich es nicht ganz.
Klar ist für mich allerdings, dass solche seltenen Fälle dann auch mal 10 oder 20 Sekunden dauern dürfen.


Um Skalierung zu erreichen muss ich im Softwarebereich oft Kaskadieren oder Hierarchien schaffen um nicht immer mit dem ganzen Wust gleichzeitig umgehen zu müssen.

Ich frage mich wie sich eine Aufteilung der Messwerte in Monatstabellen oder sogar Tagestabellen auf die Geschwindigkeit auswirken würden.
99% der Abfragen wären dann direkt auf kleinere Monats-Werte-Tabellen wie von Harald beschrieben mit ca. 300.000 Werten beschränkt.

Ich weises ja, Datenbanken ticken etwas anders... bitte nicht schlagen!
Es widerstrebt mir halt etwas am 31. Dezember die Werte von Januar bis November mit durchsuchen(im Zugriff zu haben) zu müssen, nur weil ich die Tageswerte vom 30.Dezember will. :(

Gruss
Nut

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

02.06.2011, 12:13:28 via Website

Ich hab gerade mal etwas nachgelesen was SQlite und die Skalierbarkeit angeht. Es könnte gut sein, dass Du mit Deinen Tabellengrößen da an limits kratzt ... aber das musst Du wohl mal ausprobieren mit eigenen Versuchsreihen.

Möglicherweise wird Dir auch die reine Datenbankgröße zum Verhängnis. Du müsstest jedenfalls die DB auf die SD-Karte legen und da hast Du dann schon mit der Lesegeschwindigkeit der SD-Karte zu kämpfen. Klein wir die Datenbank jedenfalls nicht werden, soviel ist mal sicher.

Wenn Du nun viele Indizies erstellst wächst die Größe natürlich noch entsprechend und mit jedem Index auch der entsprechende File-IO.

Lies mal diese beiden Artikel ..

Stackoverflow 1

Stackoverflow 2

lg Voss

nut

Antworten
nut
  • Forum-Beiträge: 5

02.06.2011, 14:40:20 via Website

Hallo Jörg, die Berkeley DB ist wohl ein Ausweg. Die Lizenz gefällt mir zwar nicht so sehr, aber da muss ich mal sehen.

Ich werde mal ein paar Tests mit Maximaldaten starten und versuchen, ein Gefühl dafür zu bekommen, was SQLite so kann, bzw. nicht.

Ihr habt mir sehr geholfen und die wesentlichen Fallstricke aufgezeigt.

Vielen Dank Euch Beiden!
Helmut

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

02.06.2011, 14:50:23 via Website

Immer wieder gerne Helmut :)

So Ziel und Ergebnisorientierte Diskussionen sind doch immer klasse.

lg Voss

nut

Antworten