Получение документов в кластере CouchBase без DocumentID или N1QL

avatar
Shraman Das
9 августа 2021 в 07:00
116
1
1

Я пытаюсь получить один документ из кластера диванов. Однако N1QL отключен в кластере.

Я хотел узнать, есть ли способ получить документ из корзины без запроса N1QL. Я также не знаю идентификаторы документов.

Мне просто нужна возможность получить случайный документ (может быть любой документ) из всей корзины без использования идентификатора документа или запроса N1QL.

Есть ли в API JAVA SDK какой-либо метод, позволяющий мне это сделать? Я использую версию 2.7, однако любая версия, которая это делает, может помочь.

Источник
Matthew Groves
9 августа 2021 в 16:43
0

Я не думаю, что это действительно возможно с N1QL или какой-либо другой службой (например, полнотекстовым поиском или аналитикой) или без создания индекса карты/уменьшения. Знаете ли вы формат идентификаторов документов? Если бы они были просто целыми числами, вы, вероятно, могли бы делать случайные предположения, пока одно из них не сработает. В противном случае я просто не понимаю, как вы могли бы это сделать. Может быть, если бы вы объяснили почему, я мог бы предложить что-то еще?

Shraman Das
9 августа 2021 в 17:28
0

Нет. У нас нет целочисленных идентификаторов документов. Точно тоже нельзя сказать. Мы пытаемся получить имена атрибутов документов, не выполняя полное сканирование таблицы, как в производственной среде, что приведет к большому количеству документов. Поскольку он не содержит схемы, мы пытаемся найти наиболее эффективный способ получения имен атрибутов. Мы знаем, что также будет потеря данных. Администратор базы данных сказал, что большинство кластеров вообще не поддерживают N1QL. Поэтому я и спросил, есть ли способ сделать это. Спасибо

Matthew Groves
10 августа 2021 в 19:19
0

Я имел в виду без N1QL в своем первом комментарии, кстати

Matthew Groves
10 августа 2021 в 19:20
0

Я думаю, что вам нужен инструмент INFER; это как раз предназначено для получения (случайной) выборки документов для вывода метаданных. Однако это особенность N1QL. docs.couchbase.com/server/current/n1ql/n1ql-language-reference/…

Shraman Das
11 августа 2021 в 04:21
0

Да. Таким образом, в наших кластерах Couchbase не установлен узел запроса. Вот почему мы не можем выполнять запросы N1QL на кластере.

Shraman Das
11 августа 2021 в 04:59
0

Да, мы столкнулись с INFER. Однако, как вы сказали, это все еще запрос N1QL. Итак, есть ли способ сделать то же самое с SDK? Например, я могу перечислить сегменты в кластере с listbuckets = cluster.clusterManager().getBuckets();. Есть ли способ сделать то же самое для вывода или выбора случайных документов через сам SDK?

Matthew Groves
11 августа 2021 в 20:04
0

Я не знаю ничего подобного без N1QL (или Analytics, или FTS, или представления карты/уменьшения)

Ответы (1)

avatar
deniswsrosa
9 августа 2021 в 08:21
1

Вы можете получить их через веб-консоль. Вы можете попросить своего администратора баз данных использовать RBAC, чтобы предоставить вам доступ только для чтения. Вы также можете использовать другие методы, но для них потребуется доступ администратора.

Лучший,

Shraman Das
9 августа 2021 в 15:43
1

Эй, спасибо. Но так как мы планируем выполнять чтение на большом количестве кластеров, то не получится перейти к веб-консолям каждого кластера. У нас их много. Тем не менее, не могли бы вы кратко рассказать о том, какие существуют методы доступа с правами администратора? Спасибо

deniswsrosa
9 августа 2021 в 19:19
1

Какие у вас права доступа к этим кластерам?

Shraman Das
11 августа 2021 в 04:20
1

Я думаю, только доступ для чтения. Однако дайте мне знать процесс для других ролей доступа, если это возможно, чтобы я мог запросить эти роли доступа.