Couchbase извлекает реляционные документы в nodeJS - PullRequest
0 голосов
/ 06 февраля 2019

Я все еще обсуждаю, в каком направлении идти и, возможно, хранить определенную информацию в своем собственном документе.так, например, клиент может иметь адреса с каждым адресом, который будет его собственным документом, а затем в документе клиента будет храниться массив ключей ref, хранящихся под адресами.Преимущество было бы в том, что я мог бы обновлять эти документы просто на основе значения ключа против необходимости сначала получить документ клиента, найти индекс массива адреса, а затем либо изменить весь документ, либо использовать субдок для замены содержимого массива.с указателем.То, где я застрял, - это как получить эти ссылки на поддок.N1QL - единственный путь, или же KV API предлагает способ, позволяющий быстро получить весь документ клиента, затем перебрать массив адресов и таким образом получить все документы, на которые есть ссылки.Я знаю, что Ottoman предлагает что-то подобное, но у меня проблема с последней версией SDK 2.6 и Ottoman, так как она не очень хорошо поддерживается.Так что, надеюсь, кто-то может поделиться некоторым пониманием, что и почему это лучший способ.

1 Ответ

0 голосов
/ 06 февраля 2019

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

С N1QL выможет выполнять СОЕДИНЕНИЯ, но опять же, за кулисами, это в конечном итоге будет вытягивать документы по ключу / значению.Это просто делает эти дополнительные шаги для вас.Прямой ключ / значение всегда будет самым быстрым маршрутом.

Если вы все еще находитесь в процессе принятия решения о том, разделить ли данные между несколькими документами или «денормализовать» данные в один документ, одну вещь, которую выследует подумать о том, как часто вы собираетесь обращаться к адресам «клиент +» вместе, и как часто вы собираетесь обращаться к клиенту / доступу отдельно.Если вы часто читаете / пишете адрес клиента +, рассмотрите возможность помещения его в один документ.В противном случае рассмотрите возможность размещения его в нескольких документах.

Третий вариант - хранить его в обоих местах или, скорее, «кэшировать» адресные данные в документе клиента.Это сложно, потому что это может быть не синхронизировано, если вы не будете осторожны.Поэтому убедитесь, что оно того стоит, прежде чем идти по этому пути.

...