Azure Cosmos Document DB, возможно ли иметь реляционные ссылки? - PullRequest
0 голосов
/ 26 мая 2018

У меня есть база данных документов, которая имеет следующую грубую структуру json:

{
    id: 32,
    Name: 'John',
    Occupation:{ 
        name: 'Programmer',
        hours: 40
    }
}

Есть ли способ создать отдельную коллекцию документов или что-то подобное, к чему может относиться занятие?Например:

{
    id: 32,
    Name: 'John',
    Occupation: 'jobs/JOB_PROGRAMMER_ID'
}

// jobs document collection
{
    id: 'JOB_PROGRAMMER_ID',
    name: 'Programmer',
    hours: 40
}

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

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Вы можете хранить любой тип ссылок в документе.Однако, как @gaurav упомянул в своем комментарии, вам нужно будет создать дополнительные запросы, чтобы следовать этим отношениям (будь то в одной коллекции или в разных коллекциях).

Запросы (а также хранимые процедуры) относятся котдельная коллекция (точнее, к одному разделу, хотя вы можете иметь запросы между разделами).Они не могут охватывать несколько коллекций;это будет зависеть от вас, чтобы интерпретировать вашу ссылку (будь то путь, идентификатор и т. д.), а затем использовать это в качестве основы для вашего последующего запроса.

Если несколько запросов нецелесообразно для вашего решения, выпотребуется разработать какую-то другую схему (например, денормализацию, где вы будете хранить подмножество связанных данных в вашем документе, как вложенный документ или набор вложенных документов).Примечание: если во встроенных документах количество встроенных документов не ограничено (например, нет ограничений, например, комментарии к сообщению в блоге или ответы на твит), вы рискуете превысить максимальный размер документа, что может привести к поломке приложения.происходит (если только у вас нет альтернативной логики для хранения содержимого, превышающего ограничение размера одного документа).

0 голосов
/ 26 мая 2018

Это можно сделать с помощью Cosmosdb. Единственное, что, не имея множественную коллекцию, вам нужно встроить ее в коллекцию, как описано ниже.

Реляционные базы данных - не единственное место, где вы можетесоздать отношения между сущностями.В базе данных документов вы можете иметь информацию в одном документе, которая фактически относится к данным в других документах.Теперь я не отстаиваю ни одной минуты, чтобы мы создавали системы, которые лучше подходили бы для реляционной базы данных в Azure Cosmos DB или любой другой базе данных документов, но простые отношения хороши и могут быть очень полезны.

Вложение документов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...