Welche Datenbank nutzen?
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Welche Datenbank nutzen?
Hallo!
Bis jetzt habe ich an "Datenbanken" XML-Dateien oder Textfiles benutzt, welche man nicht wirklich als Datenbanken bezeichnen kann, das Gebiet ist also Neuland für mich.
Folgendes Problem:
* Ich habe eine Menge Daten, hauptsächlich Texte, es sind auch mal längere dabei. Formatierungen sind nicht enthalten.
* Diese alle einzeln abzuspeichern wäre möglich, aber unschön, da man dann einen Ordner voll mit ca. 1000 Einzeldateien hätte
* Die Daten müssen sehr schnell nach Stichworten durchsucht werden. Es kann durchaus sein, dass mehrere Anfragen kommen.
* Auf die Daten muss von Linux, Windows und MacOS-Systemen zugegriffen werden können.
Welche Datenbank könntet ihr mir da empfehlen? Die Datenbank sollte nicht-komerziell sein, am besten OpenSource, sollte mit Lazarus ansprechbar sein, eventuell komerziell nutzbar sein und schnell zu durchsuchbar sein. Wäre SQLite da eventuell eine Lösung? Ich kenne mich auf diesem Gebiet nicht wirklich aus, wie man sieht...
Bis jetzt habe ich an "Datenbanken" XML-Dateien oder Textfiles benutzt, welche man nicht wirklich als Datenbanken bezeichnen kann, das Gebiet ist also Neuland für mich.
Folgendes Problem:
* Ich habe eine Menge Daten, hauptsächlich Texte, es sind auch mal längere dabei. Formatierungen sind nicht enthalten.
* Diese alle einzeln abzuspeichern wäre möglich, aber unschön, da man dann einen Ordner voll mit ca. 1000 Einzeldateien hätte
* Die Daten müssen sehr schnell nach Stichworten durchsucht werden. Es kann durchaus sein, dass mehrere Anfragen kommen.
* Auf die Daten muss von Linux, Windows und MacOS-Systemen zugegriffen werden können.
Welche Datenbank könntet ihr mir da empfehlen? Die Datenbank sollte nicht-komerziell sein, am besten OpenSource, sollte mit Lazarus ansprechbar sein, eventuell komerziell nutzbar sein und schnell zu durchsuchbar sein. Wäre SQLite da eventuell eine Lösung? Ich kenne mich auf diesem Gebiet nicht wirklich aus, wie man sieht...
Zuletzt geändert von Targion am Mo 30. Mär 2009, 17:17, insgesamt 1-mal geändert.
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Welche Datenbank nutzen?
Große Texte die indiziert werden sollen? Schreit für mich auf Anhieb nach PostgreSQL.
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Welche Datenbank nutzen?
Es sind hauptsächlich kleinere Texte oder Textbruchstücke. Die größten Teile sind ca. eine Seite lang. Alles formatierte ist in *.odt-Dateien zwischengespeichert, für die ich mir noch eine Lösung zum Durchsuchen ausdenken muss... Wahrscheinlich werde ich den Suchindex eines fremden Programmes abgreifen. Aber das ist ein anderes Thema...
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: Welche Datenbank nutzen?
Also,
ich bin ja ein Neuling, was Lazarus angeht, ich bin mir jedoch sicher, dass MySql dieses im Sql unterstützt, SQLite kann das denke ich mit an sicherheit grenzender Wahrscheinlichkeit auch.
Auch sollten Datenmengen von nur ca. 1000 Datensätzen recht gut bearbeitet werden können.
Kleines Beispiel:
Mit freundlichem Gruß
Ralph
ich bin ja ein Neuling, was Lazarus angeht, ich bin mir jedoch sicher, dass MySql dieses im Sql unterstützt, SQLite kann das denke ich mit an sicherheit grenzender Wahrscheinlichkeit auch.
Auch sollten Datenmengen von nur ca. 1000 Datensätzen recht gut bearbeitet werden können.
Kleines Beispiel:
Code: Alles auswählen
SELECT (
users.user_name
, date_format(users.user_birthdate, "%Y") AS Baujahr
, users.user_joined AS seit
, users.user_location AS Wohnort
, users.user_groups
, users.user_groups LIKE "%.5%" AS Vorsitzender
, users.user_groups LIKE "%.3%" AS Vorstand
, users.user_groups LIKE "%.7%" AS Vip
, users.user_groups LIKE "%.2%" AS Skinner
, users.user_groups LIKE "%.1%" AS Fahrer
, date_format( users.user_joined, "%y") AS u_date
, date_format(FROM_UNIXTIME( users.user_joined), "%d.%m.%Y") AS Mitglied_seit
FROM
activefusion.users
WHERE users.user_groups > ""
ORDER BY Vorsitzender DESC, Vorstand DESC, Vip DESC, users.user_name;
');
- Hier wird das Textfeld user_groups nach den Einträgen .1 oder .2 oder ... dursucht und entsprechend sortiert dargestellt.
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
- af0815
- Lazarusforum e. V.
- Beiträge: 6944
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Welche Datenbank nutzen?
odt sind gepackte Dateien mit einem eigenen Dateischema, die Dateien darinenn sind meist xml Files. In der letzten toolbox (Stand März 2009) war ein Artikel bezüglich Excel/Calc drinnen, der sich aber Gedankjlich auch auf die anderen Openoffice/MSOffice umlegen lässt. Besonders bei den 'genormten' Formaten.Targion hat geschrieben:Alles formatierte ist in *.odt-Dateien zwischengespeichert, für die ich mir noch eine Lösung zum Durchsuchen ausdenken muss... Wahrscheinlich werde ich den Suchindex eines fremden Programmes abgreifen. Aber das ist ein anderes Thema...
Bei längeren Texten bzw. wenn die Größe steigen sollte, kann man sich mal mit Volltextsuche in DB beschäftigen. Einige DBs bieten dafür einen eigenen Type 'Text' an, der aber wieder spezielle Eigenschaften hat und nicht direkt über die normalen SQL Befehle zu handhaben ist, dafür aber andere Vorzüge hat. Meistens muß die Indizierung für diese Texte dann speziell gewartet werden. Die Speicherung erfolgt meistens ausserhalb der normalen SQL Tabellen um die Effizienz zu erhalten (mein Wissen von MS SQL Server)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Welche Datenbank nutzen?
Ich bin ein MySQL-Fan. Damit habe ich (bislang) noch nie Probleme gehabt. Wenn man die Möglichkeit hat, die DB auf einen eigenen Datenbank-Server auszulagern, hat man noch den Vorteil, dass dieser dann die Abfragen (mit seiner entsprechend dimensionierten Rechnerleistung ausführt, auch hier gilt: von nix kommt nix, Dual-Core-Prozessor, 2.5 GHz, 2GB RAM, RAID sollte der schon haben), und der (Lazarus-Programm)-Client dann "entlastet" wird.
Bezüglich der Indizierung von Texten guck mal hier:
http://dev.mysql.com/doc/refman/5.1/de/indexes.html" onclick="window.open(this.href);return false;
http://dev.mysql.com/doc/refman/5.1/de/ ... earch.html" onclick="window.open(this.href);return false;
Das ganze geht auch mit einer lokalen Installation von MySQL. Aber diese MySQL-DB-Programme sind _immer_ Client-Server Anwendungen, in diesem Falle ist der Server dann der "localhost".
MySQL gibt es als OpenSource (ist bei den meisten Linux-Distros dabei, ein Klick und schon hast Du 'nen "echten, dicken" DB-Server für ein Dankeschön), aber auch als "Corporate-Server" mit Wartung, der kostet aber dann was.
Bezüglich der Indizierung von Texten guck mal hier:
http://dev.mysql.com/doc/refman/5.1/de/indexes.html" onclick="window.open(this.href);return false;
http://dev.mysql.com/doc/refman/5.1/de/ ... earch.html" onclick="window.open(this.href);return false;
Das ganze geht auch mit einer lokalen Installation von MySQL. Aber diese MySQL-DB-Programme sind _immer_ Client-Server Anwendungen, in diesem Falle ist der Server dann der "localhost".
MySQL gibt es als OpenSource (ist bei den meisten Linux-Distros dabei, ein Klick und schon hast Du 'nen "echten, dicken" DB-Server für ein Dankeschön), aber auch als "Corporate-Server" mit Wartung, der kostet aber dann was.
Zuletzt geändert von KOBOLD Messring GmbH am Di 31. Mär 2009, 08:38, insgesamt 1-mal geändert.
-
- Beiträge: 489
- Registriert: Sa 5. Apr 2008, 09:37
- OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
- CPU-Target: 32Bit /64 Bit
- Wohnort: Nähe Freiburg i.Br.
Re: Welche Datenbank nutzen?
wobei bei MySql die Lizenzierungsfrage nicht ausser Acht gelassen werden sollte.Ralph59 hat geschrieben: ich bin mir jedoch sicher, dass MySql dieses im Sql unterstützt,
Gruss Kh
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Welche Datenbank nutzen?
Wie gesagt: PostgreSQL 
Das ist bis ins letzte Byte frei und sehr viel mächtiger als MySQL. In einer Produktionsumgebung würde ich sowieso nichts anderes nehmen .... außer mir steht Oracle oder DB2 zur Verfügung *g* (aber selbst dann müsste ich gut überlegen, die sind nämlich nicht gerade sonderlich schön zu administrieren).

Das ist bis ins letzte Byte frei und sehr viel mächtiger als MySQL. In einer Produktionsumgebung würde ich sowieso nichts anderes nehmen .... außer mir steht Oracle oder DB2 zur Verfügung *g* (aber selbst dann müsste ich gut überlegen, die sind nämlich nicht gerade sonderlich schön zu administrieren).
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Welche Datenbank nutzen?
Gibt es für PostgreSQL eine entsprechende Anleitung, wie man es in Lazarus einbinden kann? Und werden die Komponenten für Lazarus auch in Zukunft in Stand gehalten? Die Website des Autors ist nämlich nicht zu erreichen.
Insgesamt mach PostreSQL einen hervorragenden Eindruck, wenn es auch ein extrem mächtiges System für ein so relativ kleines Projekt ist. Aber mal sehen, was draus wird. Wenn sich viele Clients mit dem Server verbinden (Das Projekt ist selbst eine Client<>Server-Anwendung) kann die Datenbank nicht schnell genug sein. (Obwohl bis zu 40 Rechner maximal wohl verglichen mit anderen Einsatzgebieten hier auch wenig ist)
Insgesamt mach PostreSQL einen hervorragenden Eindruck, wenn es auch ein extrem mächtiges System für ein so relativ kleines Projekt ist. Aber mal sehen, was draus wird. Wenn sich viele Clients mit dem Server verbinden (Das Projekt ist selbst eine Client<>Server-Anwendung) kann die Datenbank nicht schnell genug sein. (Obwohl bis zu 40 Rechner maximal wohl verglichen mit anderen Einsatzgebieten hier auch wenig ist)
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Welche Datenbank nutzen?
Die Anbindung an PostgreSQL ist vom Prinzip her das gleiche wie an MySQL. Ich meine sogar, dass in Lazarus beides über die selbe Schnittstelle (sqldb) läuft. Alternativ gibt's auch noch ZEOS.
Und die Projektgröße spielt für Postgres eigentlich keine Rollen. Es skaliert wunderbar nach oben, ist aber auch im kleinen Bereich 1a zu gebrauchen. Die Einrichtung eines PostgreSQL Servers ist auch nicht weiter schwierig und mit pgAdmin3 hast du eine wunderbare (Fatclient) Oberfläche für die Administration.
Und die Projektgröße spielt für Postgres eigentlich keine Rollen. Es skaliert wunderbar nach oben, ist aber auch im kleinen Bereich 1a zu gebrauchen. Die Einrichtung eines PostgreSQL Servers ist auch nicht weiter schwierig und mit pgAdmin3 hast du eine wunderbare (Fatclient) Oberfläche für die Administration.
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Welche Datenbank nutzen?
Ich muss mir unbedingt, bevor ich loslege, die Grundlagen der Datenbankprogrammierung aneignen. SQL kann ich einigermaßen.
Was ist der Vorteil, wenn ich mit ZEOS auf PostgreSQL zugreife?
Was ist der Vorteil, wenn ich mit ZEOS auf PostgreSQL zugreife?
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Welche Datenbank nutzen?
ZEOS ist meines Wissens nach ganz gut dokumentiert und bietet eben Support für sehr viele Database Backends. So kannst du verhältnismäßig einfach das Backend später auswechseln (praktisch wird das aber erschwert, wenn du oft mit SQL arbeitest, da SQL in der Realität nicht so standardisiert ist, wie es in der Theorie sein sollte). Also ansich sollte sqldb vollkommen ausreichen.
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Welche Datenbank nutzen?
Ergänzung zu Hitman:
ZEOS ist nach der gängigen Meinung, die man hier und anderswo liest sehr stabil und ausgereift. Viele behaupten, die Lazarus-eigenen DB-Komponenten (sqldb) wären das (noch) nicht so, und man bräuchte sich über "Merkwürdigkeiten" (bis hin zu totalem "Abschmieren") nicht zu wundern. Ich persönlich, habe an den sqldb-Komponenten noch nichts auszusetzen gehabt, habe aber auch noch nicht solche Anwendungen gehabt, wo viele Benutzer gleichzeitig mit dem DB-Server verbunden sind. Grosse Datenmengen (3-4 Mio Datensätze) sind auch den sqldb-Komponenten egal.
Wenn man sich auf die gängigsten SQL-Befehle beschränkt, sollte auch das Auswechseln der Datenbank keine Probleme bereiten, wobei auch hier wiederum die Tücke im Detail liegt. So stirbt z.B. eien TODBCConnection auf Mickysoft-Access beim Verwenden von doppelten Anführungszeichen bei String-Feldern (... WHERE Name="Bill Gates" => SIGSEGV), während anständige Datenbank-Systeme dagegen sehr tolerant sind.
ZEOS ist nach der gängigen Meinung, die man hier und anderswo liest sehr stabil und ausgereift. Viele behaupten, die Lazarus-eigenen DB-Komponenten (sqldb) wären das (noch) nicht so, und man bräuchte sich über "Merkwürdigkeiten" (bis hin zu totalem "Abschmieren") nicht zu wundern. Ich persönlich, habe an den sqldb-Komponenten noch nichts auszusetzen gehabt, habe aber auch noch nicht solche Anwendungen gehabt, wo viele Benutzer gleichzeitig mit dem DB-Server verbunden sind. Grosse Datenmengen (3-4 Mio Datensätze) sind auch den sqldb-Komponenten egal.
Wenn man sich auf die gängigsten SQL-Befehle beschränkt, sollte auch das Auswechseln der Datenbank keine Probleme bereiten, wobei auch hier wiederum die Tücke im Detail liegt. So stirbt z.B. eien TODBCConnection auf Mickysoft-Access beim Verwenden von doppelten Anführungszeichen bei String-Feldern (... WHERE Name="Bill Gates" => SIGSEGV), während anständige Datenbank-Systeme dagegen sehr tolerant sind.
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Welche Datenbank nutzen?
Dann benutze ich die Komponenten direkt. Ich möchte so wie so am liebsten so wenig Code, den ich nicht selbst geschrieben habe, verwenden wie möglich.
PostgreSQL läuft inzwischen perfekt auf meinem Linux-System. Ich werde mich also in der nächsten Zeit etwas ausführlicher mit der Datenbank beschäftigen und ein paar Testanwendungen schreiben. Ihr hört dann sicher von mir!
Vielen Dank für die Hilfe! Hier im Forum scheinen ja extrem viele Leute Datenbanken zu verwenden.
PostgreSQL läuft inzwischen perfekt auf meinem Linux-System. Ich werde mich also in der nächsten Zeit etwas ausführlicher mit der Datenbank beschäftigen und ein paar Testanwendungen schreiben. Ihr hört dann sicher von mir!
Vielen Dank für die Hilfe! Hier im Forum scheinen ja extrem viele Leute Datenbanken zu verwenden.
-
- Beiträge: 489
- Registriert: Sa 5. Apr 2008, 09:37
- OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
- CPU-Target: 32Bit /64 Bit
- Wohnort: Nähe Freiburg i.Br.
Re: Welche Datenbank nutzen?
dabei kann man auch firebird ruhig mit in die Auswahl nehmen.KOBOLD Messring GmbH hat geschrieben: Wenn man sich auf die gängigsten SQL-Befehle beschränkt, sollte auch das Auswechseln der Datenbank keine Probleme bereiten, wobei auch hier wiederum die Tücke im Detail liegt. So stirbt z.B. eien TODBCConnection auf Mickysoft-Access beim Verwenden von doppelten Anführungszeichen bei String-Feldern (... WHERE Name="Bill Gates" => SIGSEGV), während anständige Datenbank-Systeme dagegen sehr tolerant sind.
>> Mickysoft-Access
ist das ne DB??

Gruss KH