Правильна ли эта схема NoSQL?

#firebase #firebase-realtime-database #nosql

#firebase #firebase-realtime-database #nosql

Вопрос:

Я начинаю использовать Firebase и NoSQL, я хотел бы понять наилучшую практику, поэтому я пытаюсь создать эту схему с помощью orders, order_rows и articles. Основной запрос — показать определенный порядок, поэтому я создаю это:

     {
    "orders": {
        "1": {
            "date": "1/1/2016",
            "row_order": {
                "1": true,
                "2": true
            }
        },
        "2": {
            "date": "1/1/2016",
            "row_order": {
                "3": true
            }
        }
    },
    "articles": {
        "1": {
            "name": "a"
        },
        "2": {
            "name": "b"
        }
    },
    "row_orders": {
        "1": {
            "quantity": 7,
            "id_article": 1
        },
        "2": {
            "quantity": 2,
            "id_article": 2
        },
        "3": {
            "quantity": 4,
            "id_article": 2
        }
    }
}
  

Когда я должен показать номер заказа 1, я могу найти строки заказа, а затем из заказов строк определять статьи.

Я не использую классическую схему sql (row_orders с id_article и id_order) для упрощения получения данных.

Это правильно? Или как я могу это сделать?

Ответ №1:

Невозможно сказать, что структура данных NoSQL верна. Если вы хотите узнать о NoSQL, я рекомендую прочитать документацию Firebase по структурированию данных, эту статью о моделировании данных NoSQL и некоторые старые сообщения в блоге Firebase (например, это).).

Одна из непосредственных проблем в вашей структуре данных заключается в том, что вы используете псевдомассивные индексы в качестве ключей для ваших данных. Это приведет к трудностям, поскольку Firebase попытается интерпретировать их как фактические индексы массива (то есть вы получите обратно массив с пустым первым элементом), и он не масштабируется для многих пользователей или пользователей, которые могут быть отключены. Подробнее об этом читайте в сообщении в блоге о массивах.