Модель данных в NoSQL - PullRequest
0 голосов
/ 28 июня 2018

На самом деле, я разработчик SQL. Сейчас мир переходит на NoSQL, поэтому я стараюсь изучать NoSQL, как космические БД. На мой взгляд, возникает один основной вопрос, и я остановлюсь на этом. Как NoSQL поддерживает бизнес-ориентированные приложения. Например, у меня есть 3 таблицы в RDBMS, они являются клиентом, продуктом и заказом. Здесь клиент и продукт - это основные таблицы, заказ - это таблица транзакций. В таблице заказов есть ссылки обоих мастеров. В СУБД созданы три отдельные таблицы для одной и той же, потому что в моей форме я должен показывать список продуктов в раскрывающемся списке или в виде списка, поэтому я создал его как отдельную основную таблицу. Как спроектировать модель данных в NoSQL, будь то продукт отдельной таблицей или нет? Я с нетерпением жду.

1 Ответ

0 голосов
/ 28 июня 2018

Для вашего примера - Клиент, Продукт и Заказ. Вы можете оформить следующим образом (модель документа):

Продукт

{
    "_id" : "p1",
    "name": "camera"
},
{
    "_id" : "p2",
    "name": "mobile"
}

Заказчик

{
    "_id" : "c1",
    "name": "sunil",
    "orders": [
        {
            "_id" : "999",
            "date": "05/05/2018",
            "product_id": "p1"
        },
        {
            "_id" : "888",
            "date": "02/09/2018",
            "product_id": "p2"
        }
    ]
}

Сверху можно разглядеть, что:

В модели документа есть две таблицы по сравнению с тремя в РСУБД. Детали продукта хранятся в таблице Product. Заказы встраиваются в таблица клиентов (так что нет соединений) вместе с данными клиента.

В реляционном дизайне сущность и ее связь с другими сущностями будут описаны, а запросы и индексы будут разработаны позже. В СУБД нормализация используется для устранения избыточных данных и повышения эффективности их хранения. Запросы на объединение могут использоваться для сбора данных. Но соединения являются виновником производительности и масштаба.

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

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