Я использую 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 ответ
НЕТ Концепция внешнего ключа в CosmosDB. Согласно документам,
любые отношения между документами, которые у вас есть в документах, фактически являются «слабыми ссылками» и не будут проверяться самой базой данных. Если вы хотите убедиться, что данные, на которые ссылается документ, действительно существуют, вам нужно сделать это в своем приложении или с помощью триггеров на стороне сервера или хранимых процедур в Azure Cosmos DB.
Похожие вопросы
Новые вопросы
azure
Microsoft Azure - это платформа для облачных вычислений «Платформа как услуга» и «Инфраструктура как услуга». Используйте этот тег для вопросов по программированию, касающихся Azure. Общая справка по серверу может быть получена в разделе «Суперпользователь» или «Ошибка сервера».