#couchbase
#couchbase
Вопрос:
В СУБД есть таблицы; кроме того, похожие концепции существуют в NoSQL, например, типы в Google Datastore. Но Couchbase помещает все в одно большое пространство имен. Как мне упорядочить мои данные табличным способом?
Мне нужны преимущества в производительности табличного пространства имен. Если у меня есть 1 000 000 строк одного типа и 10 строк другого, я бы предпочел, чтобы механизму запросов не приходилось просматривать 1 000 010 строк, чтобы найти одну из этих десяти.
- Доступны сегменты, но только до десяти. Итак, на самом деле они не похожи на таблицы.
- Таблицы могут быть реализованы на прикладном уровне со свойством
type
orkind
в каждом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 /