powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как лучше хранить сырые данные
25 сообщений из 33, страница 1 из 2
Как лучше хранить сырые данные
    #38612310
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Сразу скажу новичок... Подскажите пожалуйста с реализацией.
Пишу проект, который собирает технологические данные с серверов, агрегирует и вставляет в БД.
Сырые данные которые еще не подверглись агрегации в чем лучше хранить, в оперативной памяти, в Protocol Buffers, в XML?
Если отталкиваться от количества данных, то ежесекундно будут приходить около 3000 данных, вида double(64) | double(64) | double(64) т.е. 24 байта за информационную единицу, умножив на 3000 получаю 72000 байт в секунду, умножив на 10 минут (столько планирую хранить данные) получаю 41,200 МБ цифра не большая, если что то не упустил. Но я не знаю как это отразится на производительности.
Надеюсь понятно объяснил...
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38612686
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо не понятно объяснил
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38612696
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та понятно,
Что смущает? возможность затыка SQL-сервера при таком потоке?
Проведите нагрузочный тест, проверьте загрузку сети, диска и процессора SQL-сервера при этом потоке
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38612702
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да все понятно.

Точно не в XML.

Я бы вообще не заморачивался с хранением данных в памяти, а отправлял в бд по факту получения, и аггрегацией в ней же занимался.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38612704
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlov,

А в чем проблема в хранении 42 МБ в оперативной памяти?
Зачем сложности.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38612705
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, или опасаетесь за само приложение? 42 Мб - это немного, даже если еще столько же служебной информации. Больше вопрос, как эти данные обрабатываются, от этого будет зависеть принцип хранения.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613428
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy, я тесты не делал, но в статьях и советах на форумах, пишут что не выдержит БД такой поток данных, единовременно если вставлять, проблем якобы не будет, а постоянный инсерт не выдержит. Собираюсь использовать Postgresql.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613431
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну ок, раз это небольшой объем. Тогда более высоко производительней будет в оперативке хранить, единствено, можно потерять данные при падения приложения.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613472
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlovпишут что не выдержит БД такой поток данных, единовременно если вставлять, проблем якобы не будет, а постоянный инсерт не выдержит
А пацаны-разработчики биллинга об этом и не знали.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613512
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlovежесекундно будут приходить около 3000 данных, вида double(64) | double(64) | double(64)
Таки да, не каждая СУБД выдержит, если будет поток 3000 транзакций в секунду.

С другой стороны для такого небольшого объема данных нет проблем делать ежесекундную вставку данных одной операцией.

Что за СУБД? И какое под ней железо?
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613655
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79, СУБД: PostgreSQL, железо пока CPU: Intel i3, RAM: 4ГБ, при продакшн железо скорей всего изменится в лучшую сторону.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613672
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlov,
А вот если немного изменить вопрос, объем данных пару гигабайт, ускорить частоту приема на 4, в случае смерти приложения
сохранять данные, делать различные срезы из полученной информации... без за базы ?????
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613704
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlovжелезо пока CPU: Intel i3, RAM: 4ГБ, при продакшн железо скорей всего изменится в лучшую сторону
У меня ноут мощнее :-)

Ну смотрите, ежесекундно 3000 * 24 байта = 70 килобайт. В общем, ничтожно мало.

Есть варианты. Например, генерить multiple инсерты типа:
PostgreeSQL DocsINSERT INTO products (product_no, name, price) VALUES
(1, 'Cheese', 9.99),
(2, 'Bread', 1.99),
(3, 'Milk', 2.99);

Или сохранять в файл и buill insert через Copy

Насколько критично, если какие-то данные пропадут, не попадут в БД? Например, минутный интервал?
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613773
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79, Спасибо за COPY? не знал.
Ну если будут пропадать данные раз в полгода, это еще не критично, а если периодически , то это критично. А почему это cпросили, то что команда COPY может не отработать из за ошибки в файле?
Еще вопросик, команда COPY может брать данные с RAM?
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613784
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlov,

1) Создание файла и запись в него килобайтов/мегабайтов ныне не составляет проблем по скорости. Диски быстрые, кэш большой. Поэтому можно спокойно сначала записать в файл, а потом перекинуть в БД
2) Если уж совсем критично по времени, можно файл создавать на RAM-диске.

Но у меня все равно чувство, что вы переусложняете.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613787
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,
Спасибо, буду пробовать.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613809
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlov,
в четвертом появился MemoryMappedFile можно работать с привязкой к диску можно чисто с памятью ( быстрее)
при мелких размерах, система ставит по дефолту размер кластера диска,
делаем рентабельную очередь, с конца пишем данные из разных потоков, с морды заливаем в файл, если есть желании
через дельту или как флешем проталкиваем данные на жесткий диск, можно заталкивать структуры (имхо не забывать про смещение), таки получать их из файла, и тд......
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613816
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверно лучше вместо - ставит по дефолту размер кластера диска,
выравнивает до размера клястера..
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613900
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, а что мешает собирать данные в одном потоке, а записывать в базу в разных потоках?
Разнести задачу записи в очередь из нескольких потоков и пусть пишут.
Хоть через файл, хоть напрямую...

Тут вопрос в другом: ежели за 10 минут набегает ~41 Mb данных, то за сутки получим ~5 Gb, за год более 2 Tb без учёта служебных данных и т.д., и т.п.
Какова должны быть ретроспективная глубина хранения данных?
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613928
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlov10 минут (столько планирую хранить данные)
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38613997
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Prodarlov10 минут (столько планирую хранить данные)Shocker.Pro, я помню про 10 минут.
Просто меня смутила фраза:
автор...Ну если будут пропадать данные раз в полгода, это еще не критично, а если периодически , то это критично... Не сразу понял что речь идёт именно о 10-ти минутном "куске" сырых данных.
Видимо, сказывается то, что голова побаливает...
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38614009
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsov,
Я так и планирую разделить по потокам, как раз для промежуточного хранения массива данных я и интересуюсь что использовать.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38614011
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи, Спасибо за MemoryMappedFile, беру на заметку.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38614059
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlovAlex Kuznetsov,
Я так и планирую разделить по потокам, как раз для промежуточного хранения массива данных я и интересуюсь что использовать.Тогда действительно можно посмотреть в сторону MMF. Только учтите один немаловажный момент про размер блоков .
MSDN... One advantage to using MMF I/O is that the system performs all data transfers for it in 4K pages of data. ...
Правда это было актуально для 1998 года. Сейчас ситуация изменилась и размер страницы зависит от системы.

ММF можно использовать для "скидывания" сырых данных на диск, а затем уже в отдельных потоках(после 10-ти минутного скидывания) спокойно сливать данные в базу.
Слил в базу - грохнул файл.
Таким образом может быть два потока на запись в MMF(не думаю, что для записи секундных данных нужно будет более одного потока), и сколько нужно для передачи файла в базу.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38614144
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov,
да забудь те вы о много поточном инсерте в базу....
если вытесняющую многозадачность можно победить для такой невьебенной задачи дополнительным клястером
то база ну никак не будет писать в таблицу разными потоками..
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как лучше хранить сырые данные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]