Как мне поддерживать “Таблицы” в Couchbase?

#couchbase

#couchbase

Вопрос:

В СУБД есть таблицы; кроме того, похожие концепции существуют в NoSQL, например, типы в Google Datastore. Но Couchbase помещает все в одно большое пространство имен. Как мне упорядочить мои данные табличным способом?

Мне нужны преимущества в производительности табличного пространства имен. Если у меня есть 1 000 000 строк одного типа и 10 строк другого, я бы предпочел, чтобы механизму запросов не приходилось просматривать 1 000 010 строк, чтобы найти одну из этих десяти.

  • Доступны сегменты, но только до десяти. Итак, на самом деле они не похожи на таблицы.
  • Таблицы могут быть реализованы на прикладном уровне со свойством type or kind в каждом JsonDocument . Но при этом смешиваются разные уровни абстракции: метаданные с данными.
  • Вы можете добавить к каждому ключу имя, подобное «Таблице». "User:111" вместо 111 .

Как я могу воспользоваться преимуществами таблиц / видов в Couchbase?

Ответ №1:

В настоящее время правильный способ сделать это — добавить атрибут, который представляет тип документа, а затем создать индексы с вашим атрибутом «type» в нем. Таким образом, ваш запрос будет сканировать непосредственно индекс вместо полного сканирования таблицы. На первый взгляд это может показаться необычным, но индексы являются одной из самых мощных функций в CB.

Вы можете увидеть, использует ли ваш запрос созданный вами индекс на вкладке «План» веб-консоли:https://blog.couchbase.com/couchbase-5-5-enhanced-query-plan-visualization /

Если вы используете Spring Data, это делается автоматически или вами с помощью атрибута «_class»https://blog.couchbase.com/couchbase-spring-boot-spring-data /

Создание нескольких сегментов для этого варианта использования не является хорошей стратегией, поскольку вам потребуется дополнительная работа всякий раз, когда вам нужно будет выполнить объединение.

Есть некоторые метаданные о документе, к которым вы можете получить доступ через meta () в вашем запросе (например: meta ().id, meta ().cas), но сам тип должен оставаться атрибутом верхнего уровня документа.

Вы можете добавить к каждому ключу имя, подобное «Таблице». «Пользователь: 111» вместо 111. -> Это полезно, когда вам нужно отфильтровать, какие документы следует реплицировать с помощью репликации между центрами обработки данныхhttps://blog.couchbase.com/deep-dive-cross-data-center-replication-xdcr /