Re: SQL vs файловая система для медиа архива.
От: BlackEric http://black-eric.lj.ru
Дата: 09.12.13 12:49
Оценка: +1
Здравствуйте, MOG2, Вы писали:

MOG>-возможно ли при первом способе добиться производительности первого, ну хотя бы 80%. Если да то за счет чего? И какую БД выбрать.


MOG>-возможно ли при втором способе добиться удобства как в первом. Скорость разработки, тоже важна.


MOG>Для меня ответ очевиден, но может чего не знаю. И еще нужна аргументация, что бы убедить коллег.


Это плохая идея пихать терабайты данных в БД. Если очень хочется, то можно заюзать filestream в sql servere, что в какой-то степени позволит объединить оба подхода.
https://github.com/BlackEric001
Re: SQL vs файловая система для медиа архива.
От: wildwind Россия  
Дата: 09.12.13 16:11
Оценка: +1
Здравствуйте, MOG2, Вы писали:

MOG>есть два варианта:


MOG>1. пишем каждый поток в SQLite или какую-то другую SQL БД, отдельные фреймы (кадры) храним в сжатом виде (H.264, JPG) в BLOB-ах. Размер фреймов всегда разный от 20 до 200 кБ.


Не понял, как именно пишем? 1 фрейм = 1 строка в таблице?

MOG>2. В SQL храним только линки на данные и описатели этих данных, причем постоянной длинны. А сами потоки данных храним в файловой системе. Причем пишем так что бы исключить фрагментации ФС. (для этого пишем в файлы равного размера, при создании и удалении файлов доступ к диску монопольный). SQL индекс хранится на системном диске, а файловый архив на отдельном (возможно рэйд).


А это еще зачем?

MOG>Для меня ответ очевиден, но может чего не знаю. И еще нужна аргументация, что бы убедить коллег.


А для меня нет. Поделись своим видением.
Для меня все зависит от сценариев доступа, их частоты и необходимой производительности. Ты их пока не описал.

Ну и общая рекомендация — изучить существующие аналоги. Чужой опыт точно не помешает.
SQL vs файловая система для медиа архива.
От: MOG2 Россия  
Дата: 09.12.13 12:42
Оценка:
Делаем часть системы безопасности. Видео архив. Необходимо писать\читать видео в\из архив. Всего N потоков на запись и N на одновременное чтение. N = 10-20.
Архив циклический, т.е. с возможностью перезаписи старых данных новыми. Длинна цикла одного потока несколько ТБ или несколько дней. Желательно что бы доступ к файлам был с минимальной задержкой.
есть два варианта:

1. пишем каждый поток в SQLite или какую-то другую SQL БД, отдельные фреймы (кадры) храним в сжатом виде (H.264, JPG) в BLOB-ах. Размер фреймов всегда разный от 20 до 200 кБ.

2. В SQL храним только линки на данные и описатели этих данных, причем постоянной длинны. А сами потоки данных храним в файловой системе. Причем пишем так что бы исключить фрагментации ФС. (для этого пишем в файлы равного размера, при создании и удалении файлов доступ к диску монопольный). SQL индекс хранится на системном диске, а файловый архив на отдельном (возможно рэйд).

Вообщем вопроса два:

-возможно ли при первом способе добиться производительности первого, ну хотя бы 80%. Если да то за счет чего? И какую БД выбрать.

-возможно ли при втором способе добиться удобства как в первом. Скорость разработки, тоже важна.

Для меня ответ очевиден, но может чего не знаю. И еще нужна аргументация, что бы убедить коллег.

Спасибо.
Re[2]: SQL vs файловая система для медиа архива.
От: MOG2 Россия  
Дата: 10.12.13 10:46
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, MOG2, Вы писали:


MOG>>есть два варианта:


MOG>>1. пишем каждый поток в SQLite или какую-то другую SQL БД, отдельные фреймы (кадры) храним в сжатом виде (H.264, JPG) в BLOB-ах. Размер фреймов всегда разный от 20 до 200 кБ.


W>Не понял, как именно пишем? 1 фрейм = 1 строка в таблице?


да 1 фрейм 1 строка. для h.264 это 1 nal unit. от 20-200 кБ.

MOG>>2. В SQL храним только линки на данные и описатели этих данных, причем постоянной длинны. А сами потоки данных храним в файловой системе. Причем пишем так что бы исключить фрагментации ФС. (для этого пишем в файлы равного размера, при создании и удалении файлов доступ к диску монопольный). SQL индекс хранится на системном диске, а файловый архив на отдельном (возможно рэйд).


W>А это еще зачем?


Просто есть мнение что при циклической записи (перезапись старых данных, новыми, причем размер данных все время разный) в базу данных, одновременно более десяти медиа потоков данных с общим битрейтом 50-400 мегабит в секунду и одновременно читать из нескольких клиентов с таким же суммарным битрейтом, то она, база, будет а) сильно фрагментироваться, б) тормозить, в) распухать (вакум на ней будет делать не просто, т.к. работать она должна 24х7 кроме, а объем одного потока может быть до 1 ТБ). г). кроме самой базы будет еще и фрагментироваться файловая система. само по себе фрагментирование и как следствие общее падение производительности системы, уже неприятно, но еще хуже что при этом эта производительность не постоянная, а ухудшается со временем, т.е. один раз настроить и использовать длительное время не удастся, т.к. со временем скорость чтения\записи начнет падать.
Вот собственно для устранения этих проблем и предлагается сами стримы с постоянной скоростью писать в файлы, а в базе хранить индекс, структуру и описание этих файлов. Т.е. как бы удобство доступа, поиска данных получаем использованием SQL, а производительность как при записи в файл.

MOG>>Для меня ответ очевиден, но может чего не знаю. И еще нужна аргументация, что бы убедить коллег.


W>А для меня нет. Поделись своим видением.

W>Для меня все зависит от сценариев доступа, их частоты и необходимой производительности. Ты их пока не описал.

см. выше.

W>Ну и общая рекомендация — изучить существующие аналоги. Чужой опыт точно не помешает.


подскажите куда капать? я видел две системы в которых данные писались в БД. Одна юзала MS SQL, не знаю может как то не правильно реализовали, но все работало крайне плохо, вторая была сделана на Oracle, более удачная, но там большой производительности и не требовалось.

Я по этому и спрашиваю. Потому что не знаю как используя SQLite добиться такой же производительности как при оптимизированной записи в файловую систему.
Re[3]: SQL vs файловая система для медиа архива.
От: BlackEric http://black-eric.lj.ru
Дата: 10.12.13 11:22
Оценка:
Здравствуйте, MOG2, Вы писали:

MOG>Я по этому и спрашиваю. Потому что не знаю как используя SQLite добиться такой же производительности как при оптимизированной записи в файловую систему.


1. Скорее всего никак.
2. Некоторые СУБД могут хранить данные на RAW разделе — у вас отпадают проблемы с фрагментацией ФС.

Но я бы писал в бд только описание конкретного файла с видео.
https://github.com/BlackEric001
Re[4]: SQL vs файловая система для медиа архива.
От: MOG2 Россия  
Дата: 10.12.13 11:50
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Здравствуйте, MOG2, Вы писали:


MOG>>Я по этому и спрашиваю. Потому что не знаю как используя SQLite добиться такой же производительности как при оптимизированной записи в файловую систему.


BE>1. Скорее всего никак.

BE>2. Некоторые СУБД могут хранить данные на RAW разделе — у вас отпадают проблемы с фрагментацией ФС.

Вот это интересно. Какие СУБД позволяют решить проблему с фрагментацией ФС?

BE>Но я бы писал в бд только описание конкретного файла с видео.


Да я тоже так думаю, но мне нужны железобетонные аргументы что бы убедить коллег.

Сейчас они пытаются в SQLite параллельно заливать десятки потоков по 3-6 мегабита/сек каждый. собственно это решение было принято для того что бы не писать свою систему управления архивом. что в принципе понятно. СУБД уже умеет делать все что нужно для хранения и поиска. Но вот производительность и следовательно надежность сильно хромает.
Мой вариант был как раз использовать систему управления на основе СУБД, а потоки заливать в файл. не могу убедить. Не хватает аргументов.
Re[5]: SQL vs файловая система для медиа архива.
От: MOG2 Россия  
Дата: 10.12.13 11:56
Оценка:
Ну т.е. не в файл, конечно, а в файлы. Файлы равного размера и при зацикливании архива просто переписываются новыми данными.
Re[5]: SQL vs файловая система для медиа архива.
От: BlackEric http://black-eric.lj.ru
Дата: 10.12.13 11:56
Оценка:
Здравствуйте, MOG2, Вы писали:

MOG>Здравствуйте, BlackEric, Вы писали:


BE>>Здравствуйте, MOG2, Вы писали:


MOG>>>Я по этому и спрашиваю. Потому что не знаю как используя SQLite добиться такой же производительности как при оптимизированной записи в файловую систему.


BE>>1. Скорее всего никак.

BE>>2. Некоторые СУБД могут хранить данные на RAW разделе — у вас отпадают проблемы с фрагментацией ФС.

MOG>Вот это интересно. Какие СУБД позволяют решить проблему с фрагментацией ФС?


Oracle точно. Вроде бы Sql Server.
https://github.com/BlackEric001
Re[5]: SQL vs файловая система для медиа архива.
От: LuciferArh Россия  
Дата: 10.12.13 12:29
Оценка:
Здравствуйте, MOG2, Вы писали:

MOG>Вот это интересно. Какие СУБД позволяют решить проблему с фрагментацией ФС?


Oracle позволяет (и реально пишет!) писать в RAW разделы. В общем, ему вообещ поыиг, в какую ФС писать данные.

MOG>Мой вариант был как раз использовать систему управления на основе СУБД, а потоки заливать в файл. не могу убедить. Не хватает аргументов.

В общем, более правильно. ИМХО, конечно. Тем более, что то же Oracle вполне себе позволяет писать в БД данные типа BFILE. Другой вопрос — синхронизация данных в разрезе ФС — БД. Но это уже есть предмет более другого обсуждения...
й
Re[6]: SQL vs файловая система для медиа архива.
От: MOG2 Россия  
Дата: 10.12.13 14:23
Оценка:
Здравствуйте, LuciferArh, Вы писали:

LA>Здравствуйте, MOG2, Вы писали:


MOG>>Вот это интересно. Какие СУБД позволяют решить проблему с фрагментацией ФС?


LA>Oracle позволяет (и реально пишет!) писать в RAW разделы. В общем, ему вообещ поыиг, в какую ФС писать данные.


MOG>>Мой вариант был как раз использовать систему управления на основе СУБД, а потоки заливать в файл. не могу убедить. Не хватает аргументов.

LA>В общем, более правильно. ИМХО, конечно. Тем более, что то же Oracle вполне себе позволяет писать в БД данные типа BFILE. Другой вопрос — синхронизация данных в разрезе ФС — БД. Но это уже есть предмет более другого обсуждения...

Какие могут быть проблемы в этом подходе? С чем бороться?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.