Abfrage oder Suche – Warum nicht beides?

Veröffentlicht

(16. Oktober 2020)

Tag 2 der Teilnahme an der Couchbase Connect-Ereignis und wie versprochen, beschäftige ich mich ein wenig mehr mit einigen der N1QL-Abfrage-Updates, die sich auf die Volltextsuche auswirken.

Nebenbei habe ich es früher getan Ich arbeite bei Couchbase und war der Produktmanager, der das Produkt Volltextsuche auf den Markt gebracht hat – daher liegt es mir auch jetzt noch am Herzen. Aus diesem Grund halte ich am Freitag bei derselben Veranstaltung meinen Vortrag „Vereinfachte Textsuche“. Mehr dazu am Ende dieses Artikels.

Die Volltextsuche (FTS aka Search) ist ein eigenes Thema, aber alles, was Sie für diesen Artikel wissen müssen, ist, dass es sich um einen separaten Dienst oder Satz handelt von Funktionen aus dem N1QL SQL-ähnlichen Abfragedienst von Couchbase. Ähnlich wie bei relationalen Datenbanken nutzt N1QL eine Reihe von Indizes, die als Global Secondary Indexing (GSI) bezeichnet werden.

Der Couchbase-Suchdienst verfügt über eigene Indizes und ermöglicht eine flexiblere Suche mit hoher Sprachkenntnis nach Text in Feldern oder Objekten in JSON-Dokumenten.

Binh Les talk Flex Index – Nutzen Sie die Suche mit Standard-SQL-Prädikat ohne Abfrageeinschränkung befasst sich mit den N1QL-Funktionen, mit denen eine Abfrage je nach Bedarf entweder GSI- oder FTS-Indizes verwenden kann. Dies ist eine coole neue Funktion und es gibt zwei Möglichkeiten, wie sie zugänglich ist.

Die folgenden Folien stammen aus Binhs Vortrag. Weitere Informationen und einige Live-Beispiele finden Sie im vollständigen Vortrag.

Anwendungen können zwischen Volltextsuche oder GSI-gestützten Abfragen

N1QL mit Suchprädikatfunktion

Die erste Möglichkeit, einen FTS-Index innerhalb einer N1QL-Suche zu nutzen, besteht darin, eine SEARCH () Prädikat für die WHERE -Klausel. Diese Abbildung zeigt die verschiedenen Möglichkeiten zum Abfragen über Couchbase-Dienste hinweg – je nach Anwendungsfall wird ein einziger Einstiegspunkt bereitgestellt.

# 3 in der obigen Grafik zeigt den N1QL-Aufruf der SEARCH-Funktion:

WHERE… SEARCH (indexName, zu suchender Text )

Dadurch werden die Ergebnisse auf Übereinstimmungen zwischen allen Prädikaten in der Klausel WHERE und Dokumenten mit a beschränkt Übereinstimmung für die Suche. Dies verwendet die grundlegendsten FTS-Textabfragefunktionen, ist jedoch absichtlich einfach.

N1QL mit Indexhinweis

Der alternative Ansatz wird in Binhs Folie unten rechts gezeigt. Im Übrigen ist diese Folie eine großartige Zusammenfassung der Ansätze für andere Datenbank- und Suchprodukte.

Bei Indexhinweisen ist eine einfache Anweisung in der Klausel FROM alles Dies ist erforderlich, um vorhandene FTS-Indizes zu nutzen:

FROM crm USE INDEX (USING FTS)

Es kann auch explizit (USING) verwendet werden GSI) , aber das ist meiner Meinung nach die Standardeinstellung.

Anhand dieses Hinweises überprüft der N1QL-Abfrageinterpreter, ob die in WHERE -Klausel (z. B. title und type ) werden von FTS indiziert. Sie werden anstelle von GSI-bezogenen Indizes verwendet – ohne dass weitere Eingaben erforderlich sind.

Beachten Sie, dass die Felder in SELECT -Klausel wird automatisch aus der Quelle do gezogen Dokumente und an den Benutzer zurückgegeben, ohne einen zweiten Anruf von Ihrer Anwendung aus tätigen zu müssen.

Präfixsuche mit LIKE Prädikate, Datumsbereiche, numerische Bereiche und mehr werden von diesem Ansatz unterstützt und hinter den Kulissen in leistungsstarke FTS-Abfragen umgewandelt. Weitere Informationen finden Sie in Binhs umfassendem Blog-Beitrag .

Wie werden Sie dies verwenden?

Der Workflow ist einfach: Indizieren Sie relevante Felder für die Textsuche und fügen Sie den Hinweis zu Ihren vorhandenen Abfragen hinzu. Dies ist ideal für das Prototyping und Testen mit FTS. Sie können Ihren Abfragen eine winzige Klausel hinzufügen und müssen die Anwendungen nicht wesentlich ändern.

Wenn Sie dann feststellen, dass Sie die Textsuche anstelle von N1QL verwenden möchten, können Sie sich ein Bild davon machen, wie reaktionsschnell wird es sein. Das Ziel von FTS ist es, schneller zu sein und Ihnen einen schnellen Satz relevanter und erzielter Spiele zu bieten.

Wenn Sie Ihre Anwendungen bereits mit FTS betreiben, können Sie auch versuchen, N1QL-Abfragen zu nutzen, damit Sie keinen separaten Aufruf tätigen müssen, um Feldwerte aus übereinstimmenden Dokumenten abzurufen.

Warum ist das wichtig?

Jedes Unternehmen hat Probleme, eine wachsende Anzahl immer komplexer werdender Systeme aufrechtzuerhalten. Ich war schon immer ein Verfechter eines modularen Systemansatzes, der es Systemdesignern ermöglicht, verschiedene Komponenten nach Bedarf ein- und auszutauschen. Das ist jedoch wirklich nur während der Test- und Entwicklungsphase ideal. Für die langfristige Planung ist es äußerst vorteilhaft, sich auf eine Reihe von Kernfunktionen zu standardisieren und diese so eng wie möglich zu integrieren.

Couchbase zielt darauf ab, eine Gesamtplattform für alle Schlüsselwert- und Dokumentanforderungen bereitzustellen – einschließlich der Abfrage , Textsuche, Analyse, Eventing usw. auf einer verteilten, leistungsstarken Plattform. Das ist mehr als nur Marketing sprechen :). Diese Konsolidierung der Funktionen ermöglicht es Administratoren und Entwicklern, Experten auf einer einzigen Plattform zu werden, anstatt mehrere lernen zu müssen.

Wenn Sie mehrere Systemkomponenten zu einer einheitlichen Erfahrung zusammenfassen könnten, würde sich dies meiner Meinung nach auf Ihre TCO auf eine Weise, die Sie nicht unbedingt erwarten würden.

Ich denke, das ist wichtig und warum ich bullisch bin zu dieser Art der N1QL / Search-Integration – der Einfachheit halber bravo!

Ich hoffe, Sie nehmen morgen (3. Tag der Veranstaltung) um 10:00 Uhr PDT an meinem Vortrag teil – Vereinfachte Textsuche – Methoden und Architektur Hier gebe ich eine sanfte Einführung in die Konzepte der Volltextsuche und helfe Ihnen, das Ganze zu verstehen Architektur des Dienstes. Hier registrieren .

Vielen Dank fürs Lesen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.