Стратегия хранения некоторых документов размером более 16 МБ в MongoDB

У меня есть коллекция MongoDB с именем market_data. У него есть документы, которые выглядят так:

{

        "_id" : ObjectId("1235"),

        "nm" : " eod_ny",

        "asOfDt" : "2018-11-20",

        "rgnId" : 1,

        "mrktCntxtDfId" : ObjectId("32345")

        "rlsd" : false,

        "crtdOn" : ISODate("2018-11-21T02:05:12.331Z"),

        “observations” : [

{

    Key1: “abc”,

    Key2: : “def”

},

{

    Key1: “123”,

    Key2: : “456”

}



]

}

Для большинства документов длина массива наблюдений значительно меньше, но для небольшого количества записей (около 20-30) ежедневно массив наблюдений содержит более миллиона записей и превышает лимит в 16 МБ.

Есть ли какая-нибудь стратегия, которую я могу применить для хранения этих данных без перехода в GridFS.

Я использую в своем приложении последнюю версию необработанного драйвера Java MongoDB.

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

Neil Lunn 21.11.2018 11:45

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

Mb-One 21.11.2018 11:54

Нет никакого один ответ, в чем собственно и дело. Скорее всего, вам «следует» разбить массив на его собственную коллекцию, а не встраивать. Но если вы действительно прочитаете связанные ответы, тогда вы должны лучше понять, почему каждая концепция важна.

Neil Lunn 21.11.2018 12:02

Большие (и потенциально неограниченные) массивы - антипаттерн производительности. Вам обязательно нужно пересмотреть свою модель данных, если она приближается или превышает 16 МБ на документ. Похоже, ваши наблюдения будут данными временных рядов. В блоге MongoDB есть серия сообщений, которые должны помочь: Данные временных рядов и MongoDB.

Stennie 22.11.2018 21:52
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
377
0

Другие вопросы по теме