MySQL vs. SQLite
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
datei
datenbank
definition
denken
dienst
ding
hintergrund
http
netzwerk
not
posten
problem
server
situation
system
tag
verbindung
verwenden
vorteil
windows
-
Hall?chen!
Ich habe im Thread "MySQL vs. SQLite" das erste Mal etwas ?ber SQLite gelesen und mich gleich etwas im Internetz infomiert, worum es sich dabei ?berhaupt handelt. Scheint mir auf den ersten Blick eine sehr interessante Alternative zu MySQL zu sein, insbesondere weil kein eigener DB-tag/server">Server ben?tigt wird, wenn ich das richtig verstanden habe. Deshalb w?rde ich gerne etwas ?ber eure Erfahrungen mit SQLite lesen und unter welchen Umst?nden ihr SQLite MySQL vorziehen w?rdet und umgekehrt.
Danke im voraus.
Talpa
Nachtrag: Entsprechende Links w?ren auch cool! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ganz einfach:
Unter gar keinen Umst?nden.
SQLite is keine echtes Datenbanksystem, sondern nur eine verbesserte Version von CSV (ja, der Vergleich hinkt, aber das ding baut halt mal auf Dateien auf), das SQL versteht.
Nachteile:
- Es ist extrem langsam
- Suche mit WHERE is noch langsamer
- Relationen, Transaktionen Fehlanzeige (ok, dass kann MySQL in myisam auch net).
Vorteil:
- es is in der Standart-Installation von PHP mit drin.
Was vielleicht f?r Anf?nger leichter is, aber sonst.
talpa schrieb:
insbesondere weil kein eigener DB-Server ben?tigt wird
Du brauchst f?r Mysql auch keinen eigenen Server, das Ding l?uft (genau wie Apache) einfach als Prozess (Linux) oder Dienst (Windows) im Hintergrund. -
derTurbohummel, danke f?r deinen Beitrag.
"Unter gar keinen Umst?nden": Haha, das ist ne klare Aussage!
"Es ist extrem langsam": Gut zu wissen. Aber interessant w?re auch, ab welcher Gr?ssenordnung, das ins Gewicht f?llt. F?r eine einfach G?stebuch-Anwendung und dergleichen, ist es doch wahrscheinlich unerheblich, oder?
?brigens, ich will nicht klugscheissen, aber Server steht u.a. auch f?r Prozess, Dienst...aber ich sehe ein, es f?hrt schon fast zu Missverst?ndlichkeiten, weil es viele nur noch als Bezeichnung f?r "Server-Computer" verwenden und verstehen.
Was mir noch an SQLite gef?llt, ist die M?glichkeit es in TCL- und C/C++-Projekte ?ber entsprechende Bibliotheken einzubinden.
Bin auf weitere Beitr?ge gespannt
Talpa -
Mein(e?) allerliebste Turbohummel!
Erst denken, dann posten.
Unter gar keinen Umst?nden.
In allen Situationen, wo ein MySQL-Server zu langsam oder zu aufw?ndig ist. Und nat?rlich, wenn SQLite verf?gbar ist.
SQLite is keine echtes Datenbanksystem, sondern nur eine verbesserte Version von CSV (ja, der Vergleich hinkt, aber das ding baut halt mal auf Dateien auf), das SQL versteht.
SQLite ist ein(e) "full featured database engine"! Musst du halt mal unter
http://www.sqlite.org/
die Dokumentation lesen. Des Weiteren sind die SQLite-Datenbanken bin?r organisiert, haben also ?berhaupt nichts mit CSV oder ISAM zu tun.
SQL ist eine Abfragesprache und hat nichts mit Datenbank-Engines oder -Servern zu tun, sondern lediglich mit dem Parser, der SQL in eine f?r die Datenbankengine verst?ndliches Format ?bersetzt. Kann man ?brigens alles wunderbar in der SQLite-Doku nachlesen (Das ist der Vorteil von Public-Domain-Software, da sind wirklich alle Daten frei verf?gbar).
Nachteile:
- Es ist extrem langsam
Es ist bei Shared-Hosting (mit PHP-Extension) schon per Definition schneller als jeder mySQL-Server, weil der Webserver h?chstpers?nlich in die Datenbank schreibt. Bei einer serverbasierten Datenbank muss der Webserver erst zum Datenbankserver ?bers Netzwerk eine Verbindung aufbauen.
Zitat aus:
http://www.sqlite.org/speed.html
...
SQLite 2.7.6 is often faster (sometimes more than twice as fast) than MySQL 3.23.41 for most common operations.
SQLite does not execute CREATE INDEX or DROP TABLE as fast as the other databases. But this is not seen as a problem because those are infrequent operations.
...
The results presented here come with the following caveats:
These tests did not attempt to measure multi-user performance or optimization of complex queries involving multiple joins and subqueries.
These tests are on a relatively small (approximately 14 megabyte) database. They do not measure how well the database engines scale to larger problems.
(Hervorhebungen sind von mir)
- Suche mit WHERE is noch langsamer
Gibt es auch Suchen ohne WHERE? Woher beziehst du dein (Un-)Wissen?
- Relationen, Transaktionen Fehlanzeige (ok, dass kann MySQL in myisam auch net)
Falsch. Lies die Dokumentation. Gleiche Frage wie beim letzten Zitat: Woher wei?t du das alles?
Vorteil:
- es is in der Standart-Installation von PHP mit drin.
Ist es nicht. SQLite ist erst seit PHP-Version 5 in der Standard-Distribution. Bei PHP4 (das die meisten Webhoster immer noch verwenden) ist es nicht dabei, kann aber unter Windoze recht einfach nachinstalliert werden.
Was vielleicht f?r Anf?nger leichter is, aber sonst.
Dann w?re es ja was f?r dich. *SCNR*
Nee, ein bisschen muss man sich schon mit Datenbanken und richtigem SQL auskennen -- und nicht nur den komischen MySQL-Dialekt (der n?mlich vom Standard-SQL in einigen Bereichen ziemlich stark abweicht) .
Du brauchst f?r Mysql auch keinen eigenen Server, das Ding l?uft (genau wie Apache) einfach als Prozess (Linux) oder Dienst (Windows) im Hintergrund.
Ja, und was denkst du, ist das, was da im Hintergrund vor sich hinwerkelt, h?h? Das ist der MySQL-Server.
MfG
alopex
P.S. Nicht b?se sein! Aber als SQLite-Fan konnte ich das einfach nicht so stehen lassen. Auch wenn diese Vorurteile sogar in Fachzeitschriften zu finden sind.
-
hi..
weiss jemand vielleicht ein gutes(knappes) sqlite tutorial auf deutsch. Nicht viel zeit um die englische auf der offzielen page zu lesen.
vielen dank schon mal. -
alopex schrieb:
Mein(e?) allerliebste Turbohummel!
Erst denken, dann posten.
Erst lesen, dann posten...
alopex schrieb:
Es ist bei Shared-Hosting (mit PHP-Extension) schon per Definition schneller als jeder mySQL-Server, weil der Webserver h?chstpers?nlich in die Datenbank schreibt. Bei einer serverbasierten Datenbank muss der Webserver erst zum Datenbankserver ?bers Netzwerk eine Verbindung aufbauen.
Du vergleichst ?pfel mit Birnen. Schliesslich kannst du MySQL auf dem selben Server laufen lassen wie den Webserver. Dann gibt es keinen Geschwindigkeitsunterschied per "Definition".
Die von dir ausgesuchten Textstellen von der SQLite sind interessant, aber treffen nicht unbedingt auf lima-city zu. Zutreffenderes findest du unter http://www.sqlite.org/whentouse.html unter dem Kapitel "Situations Where Another RDBMS May Work Better". Beachte dabei vor allem den Punkt "High Concurrency". Auch die Angaben von 100000 "Seitenhits" pro Tag (wobei damit eigentlich Abfragen gemeint sind) im Kapitel dar?ber sind ein Ausschlusskriterium. Rechne es dir mal aus. Im Moment ca. 10000 User pro Server = 10 Aufrufe pro Tag f?r jeden User. Wenn man bedenkt, dass in dem meisten Skripts mehr als eine Abfrage ist, ist das einfach zu wenig.
@pc-clan:
Leider keine ahnung, aber danke f?rs Aufmerksammachen auf diesen Thread
Irgendwer hatte auch noch was davon geschrieben, dass es toll w?re, dass SQLite eine Schnittstelle f?r C h?tte (per Bibliothek). Kleine Frage: Welches Datenbanksystem hat das nicht? Ich w?sste keines.
Na ja... meine Meinung zu SQLite: Ist interessant und es gibt Situationen, wo das auch bei mir die erste Wahl ist (ausser, wenn ich die Zeit habe, ein f?r mein Programm speziell zugeschnittenes DB-System zu schreiben, was immer noch am performantesten ist), aber im Fall von lima-city w?re es eine schlechte Idee.
Nachtrag:
F?r Webserver gibt es unter den frei verf?gbaren DB-Systemen meiner Meinung nach nur zwei Alternativen: Entweder MySQL oder PostgreSQL. -
So, gro?er 0-checka!
Deinetwegen musste ich mich jetzt hier einloggen! Aber sch?n der Reihe nach ...
@pc-clan
Linux kann man mit einer langj?hrigen Beziehung die man erst nach und nach aufbaut vergleichen, Windows ist im Gegensatz dazu wie ein Gang zu einer Prostituirten
So wie du in deiner Signatur Linux und die langj?hrige Beziehung, dem Benutzen von Windows und dem Gang zur Prostituierten vorziehst, halte ich es mit den Anleitungen: Man hat mehr davon, wenn man die Original-Dokumentation liest, als irgendeine schnell zusammengeschusterte deutsche Anleitung. Die einzige mir bekannte befand sich vor l?ngerer Zeit in einer Ausgabe der Internet Professionell und die weckte zwar mein Interesse an SQLite in PHP, bediente aber sonst alle hier schon erw?hnten Vorurteile.
Solltest du nur die PHP-Befehlsdokumentation suchen, bitte:
http://de.php.net/manual/de/ref.sqlite.php
F?r das von SQLite unterst?tzte SQL musst du leider mit der englischen Online-Doku auf der SQLite-Website vorlieb nehmen. Aber Vorsicht: Es gibt verschiedene SQLite-Versionen mit unterschiedlichem Funktionsumfang (PHP krebst immer noch bei der Datenbank-Version 2.1 rum).
@0-checka
Ich habe nicht mit dem Fallobstvergleich angefangen.
Was hat das f?r Vorteile, wenn sich Webserver+PHP-Modul und MySQL-Server auf dem gleichen Server-Computer befinden? Sie kommunizieren immer noch ?ber eine Netzwerkverbindung (gut, keine echte ...). Mit SQLite (und PHP-Servermodul) schreibt der Webserver direkt in die Datenbankdatei -- und das d?rfte nunmal die schnellste Variante bleiben. Das SQLite einige definitionsbedingte Schw?chen hat, wie die Tatsache, dass alle Tabellen einer Datenbank sich in einer physischen Datei befinden, kann man durch entsprechende Programmierung umgehen (mehrere Datenbanken erstellen). Ich kann keine Aussagen zu Lima-City treffen, da ich keinen Zugang zu Zugriffsstatistiken oder Server-Logs habe. Aber die Tatsache, dass oben im Ticker immer der letzte Thread in den geschrieben wurde als erstes angezeigt wird, sagt mir, dass die konkurrierenden Schreibsituationen f?r einen Webserver ?u?erst selten sind (einmal pro Sekunde d?rfte in den seltensten F?llen unterschritten werden). Diese Situationen k?nnte eine SQLite-Datenbank problemlos handeln.
Im ?brigen hatte sich der Threader?ffner auch weniger f?r die Lima-City-Statistik interessiert.
Deine Seitenzugrifss-Statistik-Mathematik verstehe ich nicht: 10000 Hits oder Requests oder Datenbank-Selects oder was auch immer: SQLite ist kein Server. Man greift damit auf die Datenbankdaten zu, wie mit fopen() auf eine Datei, nur ist SQLite sicherer als nahezu jede Dateioperation mit PHP (wie ich vor ein paar Tagen erfahren musste). Es teilen sich eben nicht, wie bei MySQL 'zig virtuelle Hosts einen Datenbankserver, sondern jeder Benutzer legt sich so viele Datenbanken an, wie er braucht. Die stehen dann mit der vollen Bandbreite zur Verf?gung, nach oben nur durch PHP-Interpreter, Webserver oder ?u?ere Netzwerkanbindung begrenzt.
Mir ging es auch nicht darum, hier eine Diskussion nach dem Motto: "Welche Datenbank ist die beste?" anzuzetteln. Ich kann nur nicht leiden, wenn SQLite als "Kinderkacke" abgetan wird, ohne dass man sich damit besch?ftigt hat. Es kostet nichts, mal das PHP-Modul zu installieren. Die Datenbank selber ist auch kostenlos und klein und f?r verschiedene Betriebssysteme erh?ltlich. Wer performante Datenbank-Abfragen programmieren will, ist auch gut beraten, sich mal anzuschauen, wie eine Datenbank "von innen" funktioniert. Daf?r ist der SQLite-Quellcode besser geeignet als der von MySQL. Auf Grund des PD-Status darf es ja auch stillschweigend in kommerzielle Produkte eingebaut werden. Wer wei?, wo schon ?berall eine SQLite-Engine im Hintergrund werkelt ...
So und zum Schluss: Ich liebe SQLite, weil es auf das abartige "ALTER TABLE"-Statement bis zur aktuellen Version verzichtet hat. Leider f?ngt man jetzt an, diesen Quatsch schrittweise einzubauen. *schluchz*
MfG
alopex -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage