|
|
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
Доброе время суток, имеется большой поток данных около 1000-2000 строк в 500мс вида id_tag(integer)|value(real)|DateTime(timestamp) реализовываю это на СУБД Postgresql, данные это производственные величины с различных датчиков, частота выборки из БД этих данных не велика, некоторые, даже может большинство, могут вообще не выбираться (все зависит от случая). В прошлой моей теме, предложили заменить СУБД на хранение в файловой системе разделенную по смысловым директориям. Согласен, будет прирост производительности и экономия дискового пространства. Но практики на построение этой системе, ноль. Хотелось поинтересоваться у знатоков которые строили подобные системы. Какие имеются подводные камни? Имеется ли велосипед? В каком типе файла лучше хранить? Погуглив, нарыл формат сериализации данных Protocol Buffers (быстрый, компактный и десериализуется сразу в классы), что скажите по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 07:15 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ldarПогуглив, нарыл формат сериализации данных Protocol Buffers (быстрый, компактный и десериализуется сразу в классы), что скажите по этому поводу? Напрягает вот эта фраза (из вашей ссылки) : Protocol Buffers не предназначен для чтения пользователем. Для десериализации данных необходим отдельный .proto-файл, в котором определяется формат сообщения. Смотря что это всё значит... если хранить удобно, а просмотр геморройный, то зачем тогда хранить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 08:40 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
vmagldarПогуглив, нарыл формат сериализации данных Protocol Buffers (быстрый, компактный и десериализуется сразу в классы), что скажите по этому поводу? Напрягает вот эта фраза (из вашей ссылки) : Protocol Buffers не предназначен для чтения пользователем. Для десериализации данных необходим отдельный .proto-файл, в котором определяется формат сообщения. Смотря что это всё значит... если хранить удобно, а просмотр геморройный, то зачем тогда хранить... Да тоже заинтересовался этим и погуглил тест Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Результаты впечатляют. Попробовал у себе десериализовать, без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 08:59 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ldar, Работайте себе с PG и непарьтесь. А производительность и диски - это вопрос денег. Если это реальная боевая задача то проблем недолжно быть вообще. Т.е. "экономить" нет смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 09:46 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ldarСогласен, будет прирост производительности Прирост производительности на каких операциях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 11:10 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинldarСогласен, будет прирост производительности Прирост производительности на каких операциях? insert, select, delete ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 11:22 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ldar, А как же where? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 11:33 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ldarКот Матроскинпропущено... Прирост производительности на каких операциях? insert, select, delete На Select и Delete по условию будет прирост производительности? Вы измеряли? Я вот сильно сомневаюсь, что запрос "отобрать/удалить данные по заданным 4-ем тегам за период с 03/03/2014 03:00:00 по 03/03/2014 06:45:00" для этого Protocol Buffers выиграет по производительности у СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 11:34 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
Если создавать файлы по времени, к примеру по часам, то при SELECT загрузить тот файл, и по нему с условием WHERE искать. Удалять данные мне нужно будет только по истечении определенного времени т.е. прошел 1 год и 1 час просто удалить файл за час. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 11:41 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ldarЕсли создавать файлы по времени, к примеру по часам, то при SELECT загрузить тот файл, и по нему с условием WHERE искать. По Вашим граничным условиям, "файл за час" - это 3 600 000 - 7 200 000 значений, искать по этому обьему будет тоже не очень быстро (даже если считать поиск файла собственно в файловой системе равны 0, что определенно не так). "удаление данных через год" в СУБД, умеющей секционирование хотя бы через view, тоже не будет тормозить. В общем, я Бы на Вашем месте построил бы тестовый стендик хотя бы гигабайт на 20, и померил бы скорость типовых операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 11:59 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Сейчас этим знамиаюсь. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 12:03 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ldar, А данные могут перекрывать весь диапазон своих типов или нет? То есть id_tag может быть любым в диапазоне от int.MinValue до int.MaxValue или только например 1,2,3,4,5? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 12:07 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВldar, А данные могут перекрывать весь диапазон своих типов или нет? То есть id_tag может быть любым в диапазоне от int.MinValue до int.MaxValue или только например 1,2,3,4,5? id_tag нет, грубо говоря он будет от 1 до 1000-2000 value может быть любым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 12:11 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ldar, А может вообще не заморачиваться с Protocol Buffers? А использовать старый добрый BinaryWriter , данные то имеют постоянную длину. Так же из данных можно исключить tag_id, создав 2000 папок и в каждую писать данные с соответствующим tag_id. Может и другие столбцы удастся ужать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 12:29 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВldar, А может вообще не заморачиваться с Protocol Buffers? А использовать старый добрый BinaryWriter , данные то имеют постоянную длину. Так же из данных можно исключить tag_id, создав 2000 папок и в каждую писать данные с соответствующим tag_id. Может и другие столбцы удастся ужать. Кстати да, хорошая идея. Так же можно и время ужать, если внутри папки с id_tag обзывать папку часами, то поле со временем использовать уже 4 байтовое заместо 8 байт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 13:00 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
ldar, Посмотри еще в MSDN по ключевым словам BinaryWriter.Write7BitEncodedInt и BinaryReader.Read7BitEncodedInt и их реализацию в рефлекторе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 13:46 |
|
||
|
Файловая система или СУБД
|
|||
|---|---|---|---|
|
#18+
Я бы начал танцевать от печки, то бишь от требований. Для типовой задачи Датчики (насколько ваша задача близка к типовой это вопрос к вам) у файловой системы два плюса. 1 Загрузка данных (субд очень плохо переваривает большой поток одиночных инсертов) 2 Хранение сырых данных (кроме того что они хранятся, они участвуют в резервном копировании, клонировании боевой базы на тест и т.п.) в то время как в типовой задаче, запросы к сырым данных очень редки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 17:39 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38649753&tid=1540875]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
152ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 270ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...