Я пишу симуляцию, в которой требуется база данных для хранения результатов.Симуляция записывает огромное количество данных.По очевидным причинам производительности я решил попробовать базу данных NoSQL, в частности MongoDB.Тем не менее, я немного озадачен своей моделью данных.
В реляционном мире схема будет выглядеть так:
- Имитация удерживаетсяконфигурация моделирования, состояние и т. д.
- Сценарий описывает конкретный случай моделирования.
- Группы реализации TestResults.
Моделирование работает следующим образом.Сначала мы создаем конфигурацию (сопоставляемую с таблицей моделирования) и указываем сценарии и количество реализаций для расчета.Затем мы начинаем симуляцию.Симуляция создает реализации в сценарии (параллельно, так много реализаций и рассчитываются одновременно, и вставляются в сценарий, над которым в данный момент работает симуляция).
Однако в NoSQL, особенно в MongoDB, отношения плохие и медленные, поэтому я должен максимально использовать встроенные документы.Итак, я придумал следующее:
Эта модель должна дать мне наилучшую производительность при первом вычислении всех реализаций и, затем, сохранении ее в базе данных в виде одной вставки (сценария).,
Однако по соображениям производительности я хочу вставить реализацию в сценарий, как только он будет вычислен.Что потребует обновления сценария каждый раз, когда реализация завершается.Это плохая идея ?В ссылке MongoDB говорится, что при добавлении встроенного документа в родительский документ родительский документ обновляется, но в любом случае происходит потеря производительности.
Было бы быстрее не встраивать реализацию в сценарий, а ссылаться на нее?Какая производительность будет потеряна при чтении и агрегировании данных позже?Любые другие подводные камни, которые я должен знать?
Спасибо.