Suchskalierung. Elasticsearch Seine Vorteile und Grundvoraussetzungen für die Installation

Guten Tag. Mein Name ist Roman Larchikov, ich bin technischer Support-Ingenieur bei Docsvision. Dieser Artikel wurde für diejenigen erstellt, die an den technischen Details der Implementierung der Suchskalierung und der Vertrautheit mit der Arbeit von Elasticsearch interessiert sind. In diesem Artikel werden die Gründe für die Verwendung von ES, die Systemanforderungen sowie die Vorteile gegenüber der Suche in MS SQL Server erläutert.

Wenn Sie an allgemeineren Begriffen interessiert sind, um zu erfahren, wie wir die Suche in der neuesten Version unserer Plattform skaliert haben, haben meine Kollegen dies im Webinar „ Docsvision ECM. Suche Skalierung ElasticSearch . "

Warum Elasticsearch?


Bild

Zunächst ist anzumerken, dass sich die Version der Docsvision 5.5-Plattform in ihrer modularen Architektur grundlegend von den vorherigen unterscheidet. In diesem Zusammenhang mussten wir die Möglichkeit einer nahezu unbegrenzten Skalierung des Systems bei gleichzeitiger Beibehaltung der Arbeitsgeschwindigkeit sicherstellen. Insbesondere musste es möglich sein, den Indizierungsdienst auch bei hoher Betriebsgeschwindigkeit skalieren zu können.

In diesem Zusammenhang wurde mit der Version von Docsvision 5.5 die Möglichkeit eingeführt, externe (Satelliten-) Datenbanken zu verwenden. Jetzt müssen nicht mehr alle Daten in einer Datenbank gespeichert werden, die bei intensiver Arbeit täglich an Volumen zunimmt. Dies erschwert die Wartung der Datenbank, die Geschwindigkeit ihrer Wiederherstellung bei Abstürzen und verlangsamt den Gesamtbetrieb der Datenbank.

Bild

Die Verwendung einer Datenbank für alles ist schlecht. Durch die Möglichkeit, Daten in separate externe Datenbanken zu übertragen, die in Docsvision 5.5 implementiert sind, können Sie die Datenbank korrekt umstrukturieren. Wenn wir also von der Suche sprechen, können Indizierungsdaten bereits außerhalb der Hauptdatenbank gespeichert werden, wodurch die Auswirkungen auf ihre Größe beseitigt werden.

Einfache Anpassung, Flexibilität, Zuverlässigkeit, Skalierbarkeit, Geschwindigkeit der Indizierung und Online-Suche stehen bei Elasticsearch im Vordergrund.

Elasticsearch ist sehr dokumentenorientiert. Nach der Indizierung können wir Daten suchen, sortieren und filtern, anstatt Datenzeilen in Spalten. Dies zeigt wiederum einen anderen Ansatz für das Abrufen von Daten und zeigt, dass Elasticsearch komplexe Volltextsuchen durchführen kann.

Dokumente werden als JSON-Objekte dargestellt. Gleichzeitig wird die Serialisierung (das Übersetzen einer Datenstruktur in eine Folge von Bits) JSON von den meisten Programmiersprachen unterstützt und ist bereits das Standardformat für NoSQL.

1. Einführung in Elasticsearch


1.1. Was ist das?


Elasticsearch ist eine Open Source skalierbare Volltextsuchmaschine, die die Lucene-Bibliothek verwendet und in Java geschrieben ist. Eine Beschreibung aller Vorteile dieses Motors finden Sie auf der offiziellen Website .

Es ist für komplexe Suchvorgänge in der Datenbank von Dokumenten / Dateien vorgesehen. In der Elasticsearch-Datenbank werden Tabellen als Indizes bezeichnet, und das Laden von Dokumenten wird als Indizierung bezeichnet.

Es kann sowohl als nicht relationales Repository von Dokumenten im JSON-Format als auch als Suchmaschine betrachtet werden, die auf der Lucene-Volltextsuche basiert. Offizielle Clients sind in Java, NET (C #), Python, Groovy, JavaScript, PHP, Perl und Ruby verfügbar.

ES wird von Elastic zusammen mit verwandten Projekten namens Elastic Stack - Elasticsearch, Logstash, Beats und Kibana entwickelt.

Elasticsearch ist für das Speichern und Suchen von Daten verantwortlich (im Folgenden wird es der Kürze halber ES genannt).

1.2. Vorteile der Elasticsearch-Suchmaschine im Vergleich zur MS SQL-Suchmaschine


Docsvision 5.5 hat die Wahl, mit welcher Suchmaschine Sie arbeiten möchten. In diesem Artikel werde ich mich auf die Verwendung der Elasticsearch-Suchmaschine konzentrieren und über ihre Vorteile gegenüber der Suche von MS SQL Server sprechen.

Hauptvorteile:

  • Die Fähigkeit des Indexdienstes, auf externe Datenspeicher zuzugreifen. Gleichzeitig werden die Daten während der Suche korrekt indiziert und korrekt angezeigt. Bei Verwendung der SQL Server-Suchmaschine war es möglich, nur nach den in der Hauptdatenbank gespeicherten Daten zu suchen.
  • ES ist ein Open-Source-Projekt, mit dem viele globale Unternehmen große Datenmengen durchsuchen.
  • ES , , .
  • (). ES, SQL Server .
  • ES — , .
  • ES (, , ), .
  • , , , .
  • ES . .
  • . , , , , , .
  • , , , , .
  • ES ( ). Docsvision, ES , SQL .
  • — SQL. , , , . , .. , . , , .. . ES .
  • Die Datenbank wird beim Hinzufügen von Sprachen nicht größer. Im Gegensatz zu ES erhöhen indizierte Daten bei Verwendung der Volltextsuche in MS SQL die Größe der Hauptdatenbank, insbesondere wenn die Indizierung in verschiedenen Sprachen konfiguriert ist, z. B. Russisch / Neutral / Englisch. In diesem Fall nimmt das Wachstum der Indizierungstabellen bereits um ein Vielfaches zu, wenn nur eine Sprache für die Indizierung ausgewählt würde, beispielsweise neutral.

2. Erforderliche Software- und Systemanforderungen für die Installation von Elasticsearch


ES kann nicht nur auf Hochleistungsservern, sondern auch auf einem Laptop bereitgestellt werden. Wenn es sich jedoch um eine produktive Umgebung handelt, sollten Sie einen separaten Server verwenden und einige Empfehlungen einhalten, die eine Überlegung wert sind.

2.1. Rom


Die wichtigste Ressource für ES ist RAM. Dies ist die primäre Ressource, die höchstwahrscheinlich zuerst endet. Die minimal zulässige Größe beträgt 8 GB, die empfohlene Größe liegt zwischen 16 und 64 GB. Mehr ist erlaubt, wenn es wirklich nötig ist.

Bild

Das Sortieren und Aggregieren kann viel Speicherplatz beanspruchen, daher ist es wichtig, über einen ausreichenden Vorrat zu verfügen. Ein Computer mit 64 GB RAM ist eine ideale Lösung, aber auch Computer mit 32 GB und 16 GB sind üblich. Wenn 8 GB oder weniger auf dem Computer installiert sind, kann dies zu gegenteiligen Ergebnissen führen (am Ende benötigen Sie möglicherweise mehrere solcher "kleinen" Computer). Die Verwendung von mehr als 64 GB hat auch seine eigenen Eigenschaften.

2.2. Zentralprozessor


ES hat in der Regel nicht viele Prozessoranforderungen, daher ist seine Auswahl weniger wichtig als bei anderen Ressourcen.

Bild

Aber Sie sollten sich an die Regel halten. Sie sollten einen modernen Prozessor mit mehreren Kernen wählen. In der Regel verwenden Server in einem Cluster Maschinen mit zwei bis acht Kernen.

Wenn Sie zwischen schnelleren Prozessoren oder Prozessoren mit mehreren Kernen wählen können, sollten Sie sich für Letzteres entscheiden. Die zusätzliche Parallelität, die mehrere Kerne bieten, führt zu einem größeren Ergebnis als eine etwas höhere Taktfrequenz.

2.3. Platte


Die Disc ist auch eine wichtige Ressource für den schnellen Betrieb von ES. Dies ist wichtig bei der Verwendung eines Clusters und doppelt wichtig für Cluster mit großen Mengen indizierter Daten.

Festplatten sind das langsamste Subsystem auf dem Server. Dies bedeutet, dass Cluster mit intensiver Aufzeichnung die Festplatten stark belasten können, was wiederum zum Engpass des Servers wird. Wenn es möglich ist, Solid-State-Laufwerke zu verwenden, müssen diese verwendet werden, weil Sie sind rotierenden Medien weit überlegen. Hosts mit SSD-Unterstützung können sowohl die Abfrage- als auch die Indizierungsleistung spürbar steigern.

Bild

Wenn Sie Festplatten (HDD) verwenden möchten, ist es ratsam, Hochleistungsserver-Festplatten (Festplatten mit einer Spindeldrehzahl von 15.000 U / min) zu verwenden.

Die Verwendung von RAID 0 ist eine effektive Möglichkeit, die Festplattengeschwindigkeit sowohl für sich drehende Festplatten als auch für SSDs zu erhöhen. Es ist nicht erforderlich, RAID-Optionen mit Spiegelung oder Parität zu verwenden, da die Hochverfügbarkeit über Replikate in ES integriert ist.

2.4. E / A-Planer


Wenn Sie Solid-State-Laufwerke verwenden, sollten Sie sicherstellen, dass der E / A-Scheduler des Betriebssystems korrekt konfiguriert ist. Wenn Daten auf die Festplatte geschrieben werden, entscheidet der E / A-Scheduler, wann diese Daten tatsächlich auf die Festplatte gesendet werden. In den meisten Fällen wird der Standard-CFQ-Scheduler verwendet (eine völlig ehrliche Warteschlange).

Dieser Scheduler weist jedem Prozess Zeitfenster zu und optimiert dann die Übermittlung dieser verschiedenen Warteschlangen an die Festplatte. Es ist für die Arbeit mit Festplatten optimiert: Aufgrund der Art der rotierenden Platten ist es je nach physischem Standort effizienter, Daten auf die Festplatte zu schreiben.

Dies ist jedoch für Halbleiterantriebe unwirksam, da sie keine rotierenden Platten verwenden. Verwenden Sie stattdessen eine Frist oder ein Noop. Der Terminplaner optimiert je nachdem, wie lange die Aufzeichnung gewartet hat, während noop nur eine einfache FIFO-Warteschlange ist.

Diese einfachen Änderungen können den Schreibdurchsatz mit dem richtigen Scheduler erheblich verbessern.

2.5. Netzwerk


Ein schnelles und zuverlässiges Netzwerk ist wichtig für die Leistung in einem verteilten System. Die geringe Latenz stellt sicher, dass Knoten problemlos Daten austauschen können, während ein hoher Durchsatz das Verschieben und Wiederherstellen von Daten erleichtert.

Moderne Rechenzentrumsnetzwerke (1 GbE, 10 GbE) reichen für die überwiegende Mehrheit der Cluster aus.

Cluster, die sich über mehrere Rechenzentren erstrecken, sollten vermieden werden, auch wenn sich die Rechenzentren in unmittelbarer Nähe befinden. Vermeiden Sie auf jeden Fall Cluster, die sich über große geografische Entfernungen erstrecken.

ES-Cluster setzen voraus, dass alle Knoten gleich sind. Lange Verzögerungen verschlimmern Probleme in verteilten Systemen und erschweren das Debuggen und die Lösung.

2.6. Generelle Empfehlungen


Es lohnt sich, „mittlere“ und „große“ Maschinen zu bevorzugen und Maschinen mit geringer Leistung zu vermeiden, um die Kosten für das einfache Starten von ES zu vermeiden. Gleichzeitig sollten wirklich große Maschinen vermieden werden: Sie führen häufig zu einer unausgewogenen Ressourcennutzung (z. B. wird der gesamte Speicher verwendet, nicht jedoch der Zentralprozessor) und können die logistische Komplexität erhöhen, wenn mehrere Knoten auf der Maschine ausgeführt werden müssen.

3. Fazit


Nachdem wir herausgefunden haben, was Elasticsearch ist, welche Hauptvorteile und Installationsanforderungen es bietet, können wir mit der Installation von ES selbst fortfahren, um die Konfiguration in Docsvision fortzusetzen.

Informationen zur Installation und Durchführung der Konfiguration sowie zur Überprüfung der Indizierung, d. H. Arbeitsfähigkeit in Docsvision, lesen Sie die Veröffentlichung meines Kollegen hier .

Interessantes Thema? Dann können Sie diesen Link nutzen und noch mehr herausfinden! Und hier können Sie sich für Kurse anmelden.

All Articles