NoSQL, Lucene und Solr
Neulich fragte mich Michael Coté, welchen Platz Apache Lucene und Solr in der NoSQL-Bewegung einnehmen (nachdem er von der Verwendung…
Neulich fragte mich Michael Coté, welchen Platz Apache Lucene und Solr in der NoSQL-Bewegung einnehmen (nachdem er von der Verwendung von Solr durch den Guardian gehört hatte), worauf ich ihm antwortete: Ich habe SQL nicht mehr in nennenswertem Umfang verwendet, seit ich 2004 mit Lucene angefangen habe (und ich habe meine Karriere damals mit Oracle DBA-Arbeiten usw. begonnen). Wir hatten „damals“ einfach keinen lustigen Namen dafür.
Spaß beiseite und auf die Gefahr hin, auf den Buzzword-Zug aufzuspringen, lassen Sie uns einen Blick auf die Definition von NoSQL bei Wikipedia werfen:
NoSQL (Not only SQL) ist eine Bewegung, die eine lose definierte Klasse von nicht-relationalen Datenspeichern fördert, die mit der langen Geschichte der relationalen Datenbanken brechen. Diese Datenspeicher benötigen keine festen Tabellenschemata, vermeiden normalerweise Join-Operationen und skalieren in der Regel horizontal.
Wenden wir diese Definition nun auf Lucene an (zu Solr kommen wir gleich noch):
- NoSQL – Überprüfen. Ironischerweise haben viele Leute auch SQL auf Lucene aufgesetzt. Ich denke, wir sollten uns auch für die Aufnahme in die No-NoSQL-Bewegung (wie Coté vorschlägt) einsetzen!
- Eine lose definierte Klasse von nicht-relationalen Datenspeichern, die mit der langen Geschichte der relationalen Datenbanken brechen: Prüfen. Und wieder einmal deckt Lucene ironischerweise beide Seiten des Ganges ab.
- Keine festen Schemata: Kennen Sie schon, haben Sie schon gemacht und das T-Shirt gekauft. Noch einmal: Lucene unterstützt auch feste Schemata.
- Vermeiden Sie Fugen: Prüfen. Denormalisierung macht Ihren Kopf frei. (zumindest in vielen Fällen). Mit etwas Arbeit können Sie Joins in Lucene durchführen.
- Horizontal skalieren: Ja und nein. Seien wir ehrlich, Lucene skaliert recht gut, aber Sie müssen schon ein wenig Arbeit investieren, um das zu erreichen. Treten Sie ein in Solr.
Da es sich bei Solr um „Lucene Best Practices“ handelt, die in einem einfach zu bedienenden Server verpackt sind, deckt es die Punkte 1-4 problemlos ab. Außerdem ist er horizontal skalierbar, sowohl was die Datengröße als auch das Abfragevolumen betrifft. Und mit der kürzlich erfolgten Ergänzung von Solr (auch bekannt als Solr Cloud) durch Apache ZooKeeper war die Skalierung noch nie so einfach. Am Ende des Tages erhalten Sie alle Vorteile von NoSQL (unter einem letztendlich konsistenten Modell) plus integrierte Funktionen wie Freitextsuche, Facettierung, Rechtschreibprüfung, Suche nach ähnlichen Objekten, Hervorhebung von Treffern und eine ganze Reihe anderer Funktionen, die sich in Tausenden von Installationen auf der ganzen Welt bewährt haben.
NoSQL sah noch nie so gut aus.