5

W systemie CMS lista klientów jest pobierana za pomocą zwykłego zapytania NDB z zamówieniem. Aby umożliwić filtrowanie nazwy, nazwy firmy i adresu e-mail, tworzę kilka (czasami wielu) indeksów. Sytuacja nie była idealna, ale wykonalna.Skorzystaj z Datastore (NDB), Search API lub obu dla widoków danych?

Teraz jest (eksperymentalna) Search API. Wygląda na to, że nie ma on żadnego związku z datastore (lub NDB), ale moje dane już tam są.

Chciałbym korzystać z wyszukiwania pełnotekstowego i umieszczać filtry na wielu polach jednocześnie, więc czy powinienem przechowywać moje dane w Datastore i duplikować części danych w Dokumentach dla interfejsu API wyszukiwania? Lub, jako search example suggests, całkowicie pomiń Datastore.

Odpowiedz

6

Nie jestem do końca pewien, jaka jest zalecana metoda jego implementacji, ale wydaje się, że interfejs API wyszukiwania został zaprojektowany przede wszystkim jako dodatkowy, ręcznie zarządzany indeks. W większości sytuacji nie jest to idealne rozwiązanie do przechowywania wszystkich danych w interfejsie API wyszukiwania, ponieważ możesz łatwo zdmuchnąć rozmiar indeksów API wyszukiwania z polami, których nigdy nie potrzebujesz filtrować ani przeszukiwać, ani nie jest dobrze zaprojektowany do wykorzystania w sytuacja, w której konieczne są regularne zapisy.

Moja osobista rekomendacja to pozostawienie wszystkich danych w NDB i zaprojektowanie klas do tworzenia dokumentów zawierających odpowiednie dane do przeszukiwania przy użyciu interfejsu API wyszukiwania, zachowując spójność między tymi dwoma nośnikami poprzez aktualizację wersji interfejsu API wyszukiwarki przy każdym zapisie. wprowadzone do wersji datastore (lub przy użyciu zadań/crons lub podobnego systemu, jeśli często piszesz dane). Podczas filtrowania w dokumentach interfejsu API wyszukiwania dla tych powiązanych danych należy przechowywać wszelkie dane wyświetlane w interfejsie, ponieważ ręczne dołączanie wyników wyszukiwania interfejsu wyszukiwania i danych magazynów danych jest niepotrzebnie intensywne i poważnie spowalnia cały proces.

+0

Dzięki. To bardzo praktyczne i użyteczne podejście do problemu. – kvdb