Чем коллекция отличается от схемы

Я очень новичок в cosmosdb (documentdb), просматривая документацию, я постоянно читаю одно, что documentdb не содержит схемы, но мне кажется, что коллекция аналогична схеме, и оба являются логическим представлением.

Википедия определила схему как «Термин« схема »относится к организации данных как к схеме как построена база данных ». Я считаю, что коллекция - это то же самое, что и организация документа, хранимая процедура, триггеры и UDF.

Итак, мой вопрос: чем схема отличается от коллекции?


person lambodar    schedule 29.05.2017    source источник
comment
Коллекция не требует определенного типа документа, в отличие от схемы. Таким образом, в одной коллекции документов могут быть документы с пользовательскими данными или документ с данными журнала или что-то еще. Коллекция - это просто набор возможных не связанных между собой документов. Коллекция похожа на базу данных, в базе данных может быть несколько (возможно, не связанных) таблиц. Но сама база данных не описывает / не определяет, какие данные хранятся.   -  person Peter Bons    schedule 29.05.2017
comment
спасибо @PeterBons звучит логично!   -  person lambodar    schedule 29.05.2017


Ответы (2)


Коллекции действительно не имеют ничего общего со схемой. Это просто организационная конструкция для документов. В Cosmos DB они служат:

  • граница транзакции. Внутри коллекции вы можете выполнять несколько запросов / обновлений в рамках транзакции, используя хранимые процедуры. Эти обновления ограничены одной коллекцией (точнее, одним разделом в коллекции).
  • граница выставления счетов / производительности. Cosmos DB позволяет указать количество единиц запроса (RU) в секунду для выделения коллекции. Каждая коллекция может иметь разные настройки RU. Каждая коллекция имеет минимальную стоимость (из-за минимального количества RU, которое должно быть выделено), независимо от того, сколько хранилища вы потребляете.
  • граница кода на стороне сервера. Сохраненные процедуры, триггеры и т. Д. Загружаются в определенную коллекцию.

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

person David Makogon    schedule 29.05.2017

Схема реляционных баз данных немного отличается от схемы документных баз данных. Проще говоря, реляционная база данных строже, чем схема документа. Другими словами, записи в таблице СУБД должны строго придерживаться схемы, поскольку у нас есть некоторая гибкость при хранении документа в коллекции документов.

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

Возьмем пример. Предположим, мы храним некоторую информацию о клиентах. В реляционной БД у нас может быть некоторая структура вроде

Customer ID INT
Name        VARCHAR(50)
Phone       VARCHAR(15)
Email       VARCHAR(255)

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

ID, Name, Phone, Email
1, John, 83453452, -
2, Victor, -, -
3, Smith, 34535345, smith@jjjj

Однако в базах данных документов некоторые столбцы должны отображаться в коллекции, если они не имеют значений.

[
{
  id: "123",
  name: "John",
  phone:"2572525",
},
{
  id: "456",
  name: "Stephen",
},
{
  id: "789",
  name: "King",
  phone:"2572525",
  email:"king@asfaf"
}
]

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

person Ravi Chandra    schedule 29.05.2017
comment
Спасибо за ответ @Ravi, я ценю ваши усилия. Подойдя к делу, я забыл об отношении db, я работал с Cassandra и ее схемой, а тот, который вы указали на нулевое значение, это просто выбор в nosql, и ничего общего с коллекцией или схемой - это то, что я понимаю - person lambodar; 29.05.2017
comment
Обычно коллекция - это набор документов, построенных по одной и той же схеме. Но базы данных документов не мешают хранить документы с разной схемой в одной коллекции. Это гибкость, которую он дает пользователям. - person Ravi Chandra; 29.05.2017
comment
Я не согласен с тем, что коллекция обычно содержит документы с одинаковой схемой. Такой условности нет. Возможно, людей этому учили (например, по одной коллекции для каждого типа объекта), но для этого нет ни правила, ни соглашения. - person David Makogon; 29.05.2017
comment
Согласитесь с @David. Вы можете хранить документы любого типа в одной коллекции и использовать шаблон «Тип / репозиторий», реализовав в документах базовый атрибут type. Вот связанный вопрос и ответ по этому сценарию. - person Matias Quaranta; 29.05.2017