Как мне поддержать «Таблицы» в Couchbase? - PullRequest
1 голос
/ 13 марта 2019

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

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

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

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

1 Ответ

2 голосов
/ 13 марта 2019

В настоящее время правильный способ сделать это - добавить атрибут, представляющий тип документа, а затем создать индексы с вашим атрибутом «тип» в нем.Таким образом, ваш запрос будет сканировать индекс напрямую, а не полный просмотр таблицы.Поначалу это может показаться необычным, но индексы - одна из самых мощных функций в 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), но сам тип должен оставаться атрибутом верхнего уровня документа.

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

...