Couchbase извлекает реляционные документы в nodeJS

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

1 ответ

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

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

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

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

Другие вопросы по тегам