Hallo, habe mal mehr eine eher allgemeine Frage, möchte gerne Euren Rat einholen. Ab welcher Datenmenge lohnt der Einsatz von z.B. MySQL? Ich möchte vermeiden unnötig "mit Kanonen auf Spatzen zu schießen". Gegeben sind einmal 1000 Zeilen ("Datensätze") mit 11 Spalten, als CSV abgespeichert ergibt dies 65 KB, und einmal 600 Zeilen mit 10 Spalten, in CSV-Form 60 KB. Ich überlege ein Perl-Skript zu schreiben. Die Datendateien dürfen auf keinen Fall durcheinandergeraten wenn mal ausnahmsweise 2-3 Benutzer (fast) gleichzeitig darauf zugreifen um einzelne Sätze zu lesen oder zu ändern. Falls selber programmiert werde ich wohl nicht umhin kommen die entsprechende Datei für ein paar Sekunden vor dem Zugriff von anderen Benutzern zu sperren. Wie wird dieses Sperren von den "professionellen" Datenbanken gemacht? Wie gewohnt mit Lockfile? Und wenn ausgerechnet in dem Sekundenbruchteil zwischen Prüfen und Lockfile-Setzen doch ein anderer Benutzer drauf zugreift? Kann so eine Situation auch mit (z.B.) MySQL auftreten? Wie ist das dort gelöst? Nach welchen Stichwörtern muß ich hier googlen? Ein Sperren einzelner Datensätze wird aber m.E. nicht notwendig sein. Was habt Ihr an Erfahrungen/Infos? Danke im voraus. -Ralph -- 5 GB Mailbox, 50 FreeSMS http://www.gmx.net/de/go/promail +++ GMX - die erste Adresse für Mail, Message, More +++
Hi Ralph, Ralph Mueller schrieb am 02.08.2005 15:08 :
Ab welcher Datenmenge lohnt der Einsatz von z.B. MySQL?
Es geht eigentlich nicht um die Datenmenge, sondern eher darum, was du mit den Daten anfangen willst. Es gibt nämlich nicht nur relationale DBMS.
Ich möchte vermeiden unnötig "mit Kanonen auf Spatzen zu schießen".
Wie gesagt, es kommt darauf an, was genau mit den Daten geschehen soll. So wie du deinen Fall schilderst, würde ja schon fast Excel mit seinen Sperrmöglichkeiten genügen.
Gegeben sind einmal 1000 Zeilen ("Datensätze") mit 11 Spalten, als CSV abgespeichert ergibt dies 65 KB, und einmal 600 Zeilen mit 10 Spalten, in CSV-Form 60 KB. Ich überlege ein Perl-Skript zu schreiben.
Ich wüsste nicht, warum man das nicht in eine Datenbank einspeisen sollte.
Die Datendateien dürfen auf keinen Fall durcheinandergeraten wenn mal ausnahmsweise 2-3 Benutzer (fast) gleichzeitig darauf zugreifen um einzelne Sätze zu lesen oder zu ändern. Falls selber programmiert werde ich wohl nicht umhin kommen die entsprechende Datei für ein paar Sekunden vor dem Zugriff von anderen Benutzern zu sperren. Wie wird dieses Sperren von den "professionellen" Datenbanken gemacht? Wie gewohnt mit Lockfile?
Wenn das so einfach wäre... :D
Und wenn ausgerechnet in dem Sekundenbruchteil zwischen Prüfen und Lockfile-Setzen doch ein anderer Benutzer drauf zugreift? Kann so eine Situation auch mit (z.B.) MySQL auftreten? Wie ist das dort gelöst? Nach welchen Stichwörtern muß ich hier googlen?
Ich habe nach 'dbms Transaktionen sperren' gegoogelt und dabei als ersten Treffer dies erhalten: http://www.kreissl.info/diggs/db_09.php
Ein Sperren einzelner Datensätze wird aber m.E. nicht notwendig sein.
Was habt Ihr an Erfahrungen/Infos? Danke im voraus.
Ich habe die Erfahrung gemacht, dass man die Anforderungen sehr exakt spezifizieren muss, um eine gute Lösung finden zu können. - Und dann ist eine fertige Lösung normalerweise immer billiger als eine selbstgestrickte Lösung. Vielleicht würde subversion schon euren Ansprüchen genügen? Gruß, Michael
Hallo! Ich denke, dass sich der Aufwand zum Selbstprogrammieren auch bei deinem kleineren Datenaufkommen nicht lohnt. mySQL hat für alle deine Probleme bereits fertige Lösungen und die SQL-Syntax als mächtige Schnittstelle. Mach doch einfach mal einen Kosten-Nutzen-Vergleich! Der Vorteil bei mySQL liegt darin, dass Du weniger Aufwand hast und die Datenbank auch leichter später zu erweitern ist. Der Nachteil allerdings, dass die Anwendung mehr Speicher verbraucht (der ganze mySQL Kram der läuft) und vielleicht _etwas_ langsamer ist, als eine spezifische gut programmierte Lösung die genau auf dein Problem zugeschneidert ist - für mySQL gehen ja auch immer daten übers Netzwerk und wenns von localhost zu 127.0.0.1 ist ;-). Ich würde mir persönlich nur bei den zeitkritischsten Problemen die Last auferlegen da selber was zu implementieren. Gruß Marcel Bankmann Ralph Mueller wrote:
Hallo,
habe mal mehr eine eher allgemeine Frage, möchte gerne Euren Rat einholen.
Ab welcher Datenmenge lohnt der Einsatz von z.B. MySQL? Ich möchte vermeiden unnötig "mit Kanonen auf Spatzen zu schießen".
Gegeben sind einmal 1000 Zeilen ("Datensätze") mit 11 Spalten, als CSV abgespeichert ergibt dies 65 KB, und einmal 600 Zeilen mit 10 Spalten, in CSV-Form 60 KB. Ich überlege ein Perl-Skript zu schreiben.
Die Datendateien dürfen auf keinen Fall durcheinandergeraten wenn mal ausnahmsweise 2-3 Benutzer (fast) gleichzeitig darauf zugreifen um einzelne Sätze zu lesen oder zu ändern. Falls selber programmiert werde ich wohl nicht umhin kommen die entsprechende Datei für ein paar Sekunden vor dem Zugriff von anderen Benutzern zu sperren. Wie wird dieses Sperren von den "professionellen" Datenbanken gemacht? Wie gewohnt mit Lockfile?
Und wenn ausgerechnet in dem Sekundenbruchteil zwischen Prüfen und Lockfile-Setzen doch ein anderer Benutzer drauf zugreift? Kann so eine Situation auch mit (z.B.) MySQL auftreten? Wie ist das dort gelöst? Nach welchen Stichwörtern muß ich hier googlen?
Ein Sperren einzelner Datensätze wird aber m.E. nicht notwendig sein.
Was habt Ihr an Erfahrungen/Infos? Danke im voraus.
-Ralph
On Tue, Aug 02, 2005 at 07:17:31PM +0200, adsci wrote:
für mySQL gehen ja auch immer daten übers Netzwerk und wenns von localhost zu 127.0.0.1 ist ;-).
Noe. Mysqld kann auch komplett ohne IP-Sockets laufen. Ausserdem erklaert die Client-API: "The value of host may be either a hostname or an IP address. If host is NULL or the string "localhost", a connection to the local host is assumed. If the OS supports sockets (Unix) or named pipes (Windows), they are used instead of TCP/IP to connect to the server." http://dev.mysql.com/doc/mysql/en/mysql-real-connect.html Peter
Hallo Ralph, Am Dienstag, 2. August 2005 15:08 schrieb Ralph Mueller:
Ab welcher Datenmenge lohnt der Einsatz von z.B. MySQL? Ich möchte vermeiden unnötig "mit Kanonen auf Spatzen zu schießen".
wenn Dir die Datenintegrität wichtig ist, gibt es kein mit Kanonen auf Spatzen schießen.
Die Datendateien dürfen auf keinen Fall durcheinandergeraten wenn mal ausnahmsweise 2-3 Benutzer (fast) gleichzeitig darauf zugreifen um einzelne Sätze zu lesen oder zu ändern. Falls selber programmiert werde ich wohl nicht umhin kommen die entsprechende Datei für ein paar Sekunden vor dem Zugriff von anderen Benutzern zu sperren. Wie wird dieses Sperren von den "professionellen" Datenbanken gemacht? Wie gewohnt mit Lockfile?
Ne, das ist bei Datenbanken ein bißchen komplizierter. Es gibt ja auch verschiedene Arten von Sperren: die ganze Tabelle, einzelne Datensätze nur für Schreibvorgänge, auch für Lesevorgänge etc.
Und wenn ausgerechnet in dem Sekundenbruchteil zwischen Prüfen und Lockfile-Setzen doch ein anderer Benutzer drauf zugreift? Kann so eine Situation auch mit (z.B.) MySQL auftreten? Wie ist das dort gelöst? Nach welchen Stichwörtern muß ich hier googlen?
such mal nach "datenbank und acid"
Ein Sperren einzelner Datensätze wird aber m.E. nicht notwendig sein.
Gibt's bei guten Datenbanken gratis dazu.
Was habt Ihr an Erfahrungen/Infos? Danke im voraus.
Ich bin nun nicht jemand mit gigantischen Datenaufkommen, aber bei meinen ca. 7GB und ca. 20 Millionen Datensätzen hat mich postgres bisher nicht enttäuscht. Wenn Du Dich erst einmal ein bißchen mit einer Datenbank beschäftigt hast und Du einige Möglichkeiten kennengelernt hast, findest Du vielleicht noch andere Anwendungsmöglichkeiten für Deine Projekte. Meiner Meinung nach kann zumindest grundlegendes Wissen um Datenbanken und ihre Möglichkeiten nie schaden. Ralf -- Summer is butter on your chin and corn mush between every tooth. -- Calvin
Ralph Mueller schrieb:
Ab welcher Datenmenge lohnt der Einsatz von z.B. MySQL? Ich möchte vermeiden unnötig "mit Kanonen auf Spatzen zu schießen".
Vielleicht ist "sqlite" eine Alternative für Dich. Website: http://www.sqlite.org Gruß Markus
participants (6)
-
adsci
-
Markus Neugebauer
-
Michael Wenger
-
Peter Wiersig
-
Ralf Meyer
-
Ralph Mueller