MongoDB ключ-значение БД альтернатива со сжатием - PullRequest
0 голосов
/ 15 июля 2011

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

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

Я просматривал http://nosql -database.org / , но я не знаю, какая база данных лучше всего подходит для моих нужд.

Большое спасибо:)

Ответы [ 3 ]

2 голосов
/ 15 июля 2011
2 голосов
/ 16 июля 2011

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

Чтобы уменьшить потребление диска, попробуйте сократитьимена полей, поэтому вместо:

{
    _id: "47cc67093475061e3d95369d",
    timestamp: "2011-06-09T17:46:21",
    value: 314159,
    quality: 3
}

Попробуйте:

{
    _id: "47cc67093475061e3d95369d",
    t: "2011-06-09T17:46:21",
    v: 314159,
    q: 3
}

Затем вы можете сопоставить имена этих полей с чем-то более значимым внутри вашего приложения.

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

1 голос
/ 15 июля 2011

Дисковое пространство дешево, не волнуйтесь об этом, разработка с новой базой данных будет стоить намного дороже ... Если у вас на Windows вы можете попробовать RavenDB .

Также мб принятьпосмотрите этот ответ об уменьшении размера базы данных mongo:

Вы можете сделать это "сжатие", запустив mongod --repair или подключившись напрямую и запустив db.repairDatabase ().

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