Удаление внешних связей в CosmosDB? - PullRequest
0 голосов
/ 31 октября 2019

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

Если удаленный документ удален, каким будет наиболее эффективный способ найти все ссылки на внешние ключи и убедиться, что они удалены?

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

{
"foreignId": "crazy_person",
"foreignType": "person"
}

Исохранить эту структуру в любой форме или форме в различных документах, а затем, когда «crazy_person» удален, я нахожу все документы, для которых определена эта структура, и если ForeignId / foreignType соответствует crazy_person, чтобы удалить их.

Не знаю, какЯ хотел бы реализовать это, хотя структура выше может быть в любом данном документе, например, так:

{
   "foreignPerson": {
     "foreignId": "crazy_person",
     "foreignType": "person"   
},
    "foreignPeople": [
{
"foreignId": "crazy_person",
"foreignType": "person"
}
]
}

1 Ответ

1 голос
/ 31 октября 2019

Существует NO Концепция внешнего ключа в CosmosDB. Согласно документам,

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

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