Как лучше хранить сырые данные
darlov
Дата: 11.04.2014 13:47:47
Доброго времени суток. Сразу скажу новичок... Подскажите пожалуйста с реализацией.
Пишу проект, который собирает технологические данные с серверов, агрегирует и вставляет в БД.
Сырые данные которые еще не подверглись агрегации в чем лучше хранить, в оперативной памяти, в Protocol Buffers, в XML?
Если отталкиваться от количества данных, то ежесекундно будут приходить около 3000 данных, вида double(64) | double(64) | double(64) т.е. 24 байта за информационную единицу, умножив на 3000 получаю 72000 байт в секунду, умножив на 10 минут (столько планирую хранить данные) получаю 41,200 МБ цифра не большая, если что то не упустил. Но я не знаю как это отразится на производительности.
Надеюсь понятно объяснил...
darlov
Дата: 11.04.2014 17:38:53
Видимо не понятно объяснил
Shocker.Pro
Дата: 11.04.2014 17:43:04
Та понятно,
Что смущает? возможность затыка SQL-сервера при таком потоке?
Проведите нагрузочный тест, проверьте загрузку сети, диска и процессора SQL-сервера при этом потоке
Antonariy
Дата: 11.04.2014 17:45:53
Да все понятно.
Точно не в XML.
Я бы вообще не заморачивался с хранением данных в памяти, а отправлял в бд по факту получения, и аггрегацией в ней же занимался.
dvim
Дата: 11.04.2014 17:46:30
darlov,
А в чем проблема в хранении 42 МБ в оперативной памяти?
Зачем сложности.
Shocker.Pro
Дата: 11.04.2014 17:47:04
а, или опасаетесь за само приложение? 42 Мб - это немного, даже если еще столько же служебной информации. Больше вопрос, как эти данные обрабатываются, от этого будет зависеть принцип хранения.
darlov
Дата: 13.04.2014 11:18:18
Antonariy, я тесты не делал, но в статьях и советах на форумах, пишут что не выдержит БД такой поток данных, единовременно если вставлять, проблем якобы не будет, а постоянный инсерт не выдержит. Собираюсь использовать Postgresql.
darlov
Дата: 13.04.2014 11:23:33
Ну ок, раз это небольшой объем. Тогда более высоко производительней будет в оперативке хранить, единствено, можно потерять данные при падения приложения.
Сон Веры Павловны
Дата: 13.04.2014 12:38:38
darlov |
---|
пишут что не выдержит БД такой поток данных, единовременно если вставлять, проблем якобы не будет, а постоянный инсерт не выдержит |
А пацаны-разработчики биллинга об этом и не знали.
Arm79
Дата: 13.04.2014 13:53:39
darlov |
---|
ежесекундно будут приходить около 3000 данных, вида double(64) | double(64) | double(64) |
Таки да, не каждая СУБД выдержит, если будет поток 3000 транзакций в секунду.
С другой стороны для такого небольшого объема данных нет проблем делать ежесекундную вставку данных одной операцией.
Что за СУБД? И какое под ней железо?