Как правильно использовать CosmosDb с документами размером более 2 Мб? - PullRequest
0 голосов
/ 20 мая 2019

Я использую Azure CosmosDb в качестве базы данных моего приложения.

Допустим, мне нужно сохранить все страны, города и улицы в моей базе данных. Итак, у меня был бы предмет, который выглядел так:

{
    country: Brazil,
    size: 1000,
    population: 200000,
    cities: [
        {
            city: Rio
            population: 8000
            streets: [
                {
                    name: A,
                    postalCode: 12345
                },
                {
                    name: B,
                    postalCode: 34567
                }
            ],
            ...

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

Итак, как правильно с этим бороться? Стоит ли разделять города и улицы в разных коллекциях? Однако использование разных коллекций имеет много недостатков, поскольку при обновлении двух разных коллекций невозможно использовать хранимую процедуру или гарантировать транзакцию.

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Можете ли вы объяснить, почему вам нужно все в одном гигантском документе? Любой, почему вам нужны транзакции для обновления этих данных?

Лучшим подходом является использование нескольких отдельных документов, хранящихся в одной коллекции, для более удобного управления.

Используйте поле в каждом документе, чтобы описать его уровень (страна, город, почтовый индекс), а затем сохраните всю необходимую информацию в этом документе для этого уровня. Возможно, вы можете использовать страну в качестве ключа раздела, так как он, вероятно, будет соответствовать пределу 10 ГБ / раздела.

0 голосов
/ 20 мая 2019

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

...