VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Запись разговоров в базу mysql..

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: Запись разговоров в базу mysql..

Сообщение Sfinx »

Е
сли вы будете хранить изображение в базе в виде BLOBа, то когда пользователь запросит с сервера данные все данные будут загружены в память. А это много.
Типичный бред - тип явно не вкурсе как работают базы. Результат select'а - это только индекс - обычно массив 64 разрядных интов. Вот когда мы делаем с клиента запрос аля fetch_row - вот тогда и только тогда BLOB загружается с диска в буфер на сервере и передается по сети в буфер клиенту. Иначе "select * from some_blob_table" убивал бы серваки напрочь, причем сплошь и рядом ;) У меня вот табличка на 100GB, к примеру, а на сервере всего 8GB RAM ;)
Rus

-----------
SfinxSoft
http://sfinxsoft.com
kasper
Сообщения: 199
Зарегистрирован: 03 авг 2011, 11:00

Re: Запись разговоров в базу mysql..

Сообщение kasper »

Out писал(а):Картинки хранят в базе, думаю аудиофайлы тоже хранятся без проблем
Out писал(а):В базе можно хранить все, главное чтобы знать как это хранить, чтобы легко заливалось и скачивалось.
Out, вы не о том, если я правильно прочитал тут обсуждают не что можно хранить в базе, а есть ли смысл хранить в базе аудиозаписи.

И здесь уже было сообщение, что оно может оправдать себя, если будет ну очень нужна какая нить из плюшек баз данных, которую невозможно реализовать в случае хранения файлами (мне тоже сложновато такое представить).
И ещё в тему, майкрософт уже выделилась этим, что в своём sharepoint хранит все документы в базе, а теперь в рекомендациях по увеличению производительности предлагают выносить хранение файлов из базы на диск(в том числе и на самом майкрософт находил подобную статейку).
И вот рекомендации когда следует использовать FILESTREAM (проще говоря когда база данных хранит blob записи в отдельных файлах)
Источник:http://technet.microsoft.com/en-en/libr ... .100).aspx

Код: Выделить всё

-средний размер сохраняемых объектов превышает 1 МБ;
-важен быстрый доступ для чтения;
Sfinx писал(а):Поиск в аудифайлах - бред сивой кобылы, этим занимаются только силовики, и то сомневаюсь
Кстати Sfinx, логично что аудиофайлы будут использоваться для прослушивания, и если уж речь о плюшках ФС то они могут читать данные из файла по смещению. В случае с базой, сложно представить, это: или писать свой плеер который будет читать куски блоб значения из базы (что как то бредово), или полностью считывать блоб значение в файл (что есть избыточно) и использовать стандартные плееры|или веб.
The asterisk is my hero
Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: Запись разговоров в базу mysql..

Сообщение Sfinx »

Кстати Sfinx, логично что аудиофайлы будут использоваться для прослушивания, и если уж речь о плюшках ФС то они могут читать данные из файла по смещению. В случае с базой, сложно представить, это: или писать свой плеер который будет читать куски блоб значения из базы (что как то бредово), или полностью считывать блоб значение в файл (что есть избыточно) и использовать стандартные плееры|или веб.
Конечно логично :

a) поиск в 99% осуществляют не в аудио данных, а по src/dst номерам, timestamp'у и т.д. - здесь выигрывает база, так как шариться по ФС с миллионом записей, добывая эту инфу, как минимум глупо

b) для прослушивания незачем доставать сразу все BLOB'ы - достаточно создать линки для броузера на страничке и только при клике доставать конкретный для проигрывания в этом же броузере

c) в том 1%, где нам все таки нужен будет ASR - можно написать скрипт/программу, которые будут распознавать audio-поток по записям, и класть распознанное в какое-нить transcripted_audio varchar поле. Я бы это делал в момент добавления новой записи, чем бы снял все последующие проблемы и упростил задачу донельзя

d) в случае кластера - хранение записей/voicemail'ов в базе - это must have. Никак не представляю себе ФС-хранение в этом случае, мягко говоря - закукуаетесь копировать это все туда-сюда ;)

где-то так ...
Rus

-----------
SfinxSoft
http://sfinxsoft.com
tma
Сообщения: 1809
Зарегистрирован: 18 сен 2010, 20:50
Контактная информация:

Re: Запись разговоров в базу mysql..

Сообщение tma »

Sfinx писал(а): a) поиск в 99% осуществляют не в аудио данных, а по src/dst номерам, timestamp'у и т.д. - здесь выигрывает база, так как шариться по ФС с миллионом записей, добывая эту инфу, как минимум глупо
Глупо для этого держать сам аудио-файл в БД, когда можно там хранить его уникальное имя на FS.
Никто никогда не будет шариться по файлам - сделали запрос, получили имя файла - достали файл.
При этом делать с файлами можно что угодно, в том числе и проигрывать его со смещением, как правильно написал kasper.
И зачем хранить сам файл в БД?
Sfinx писал(а): b) для прослушивания незачем доставать сразу все BLOB'ы - достаточно создать линки для броузера на страничке и только при клике доставать конкретный для проигрывания в этом же броузере
Потрясающе. Т.е. для запроса каждого файла понадобится делать запрос в БД, затем вытаскивать оттуда нужный файл?!!
Не проще ли не страдать маразмом и не создавать линки в браузере на файлы?!!
Соответственно для того, чтобы открыть нужный файл, нужно будет сделать минимум операций.
Но у некоторых - свой особый путь...
Sfinx писал(а): c) в том 1%, где нам все таки нужен будет ASR - можно написать скрипт/программу, которые будут распознавать audio-поток по записям, и класть распознанное в какое-нить transcripted_audio varchar поле. Я бы это делал в момент добавления новой записи, чем бы снял все последующие проблемы и упростил задачу донельзя
ASR = Answer Seizure Ratio?
Зачем для этого разбирать аудио-файл?
ASR is a measure of network quality defined in ITU SG2 Recommendation E.411: ‘International network management - Operational guidance’.

Its calculated by taking the number of sucessfully answered calls and dividing by the total number of calls attempted (seizures). Since busy signals and other rejections by the called number count as call failures, the calculated ASR value can vary depending on user behaviour.
Ну Ok, можете разбирать и для ASR.
Sfinx писал(а): d) в случае кластера - хранение записей/voicemail'ов в базе - это must have. Никак не представляю себе ФС-хранение в этом случае, мягко говоря - закукуаетесь копировать это все туда-сюда ;)
"Мыши плакали, кололись, но продолжали есть кактус." (C).
Ваше право страдать маразмом. Вы даже усиленно пытаетесь найти оправдания, правда пока что какие-то жалкие попытки (особенно про линки в браузере :lol:).
Даже в случае voicemail/etc удобнее файлы хранить на файловой системе на отдельном сервере, но никак не в БД.
Хотя бы только из-за того, что скорость поиска конкретного файла на файловой системе будет намного выше (В БД нашли нужную запись, взяли имя файла - обратились к нему), чем в случае хранения его в БД (В БД нашли нужную запись, выгрузили файл на файловую систему сформировав ссылку, обратились к нему).
В любом случае работа с аудио-файлом возможна при его предварительной выгрузки на файловую систему!
Смысл делать дополнительные действия, засовывать файлы в БД, увеличивать ее размер и уменьшать быстродействие?
А если индекс накрылся? Восстановление/резервирование/etc? Жуть какая-то. БД - транзакционные, не знаю как там блоб хранятся, но если они еще и в транзакшин лог будут попадать - это просто жесть.
Ваш SQL сервер просядет просто мгновенно при более-менее большом объеме данных - это ж нужно какие винты иметь шустрые, чтобы постоянно перемалывать такие объемы между памятью и диском?
SkyTel OU - облачная АТС, DID, SIP-транк с посекундной тарификаицей, мобильная связь
http://skytel24.com | Эстония: +372.333.55.10 | Россия: +7(495)4019900
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Запись разговоров в базу mysql..

Сообщение zzuz »

В субботу восстанавливал часть данных из таблицы , где хранилось куча записей о звонках в нашем продукте. Размер только одной таблицы более 4 Гигабайт, шесть полей два индекса плюс инкрементное поле. Восстанавливал из бекапа довольно не быстро. Я даже боюсь представить , что было бы если бы в поле record_file хранилась бы не информация о местоположении файла в системе , а сами бы файлы. Я бы такой бекап месяц бы восстанавливал)). Тем более файлы можно в рабочего продакшена перемещать на удаленное хранилище по истечении большого промежутка времени , скажем через год . Далее очень просто заставить веб морду проиграть файл , просто вернув его на своё место, указанное в БД. Рисовать мильон фрейморков для таких действий в БД - полное безрассудство.
Линия24 - Системы Массового Телефонного Обслуживания
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Запись разговоров в базу mysql..

Сообщение zzuz »

"Многое , почти всё" - это что конкретно?
У Вас имеется какая-то особая информация о наших клиентах, о которой мне не договаривают? Или Вы можете расказать о удачном использовании ведения BLOB данных в БД , когда только за 3 месяца накапливается по 20 миллионов строк в таблице и предоставить бенчмарки производительности?
Линия24 - Системы Массового Телефонного Обслуживания
ys1797
Сообщения: 240
Зарегистрирован: 28 июн 2011, 17:59

Re: Запись разговоров в базу mysql..

Сообщение ys1797 »

Где-то в просторах интернета на профильных форумах лет 10 назад обсасывалась тема хранения файлов в БД.
После флуда на 150 страниц все-же сошлись, что хранить файлы в БД, а по сути хранение файлов внутри других файлов - есть бред.
Под файлами - имеется ввиду их содержимое, а не ссылки на файлы в пределах FS.
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Запись разговоров в базу mysql..

Сообщение Vlad1983 »

ТС уже побоку на это всё
он уже возможно сделал и пользуется

по теме хранения при использовании нескольких серверов обработки медиа:
есть прецедент с нодами физически в разных городах
каждая нода хранит записи у себя в FS в виде файлов, а вытягивание посредством mod_proxy для apache2
никакого дублирования записей и перекачки их в БД
ЛС: @rostel
Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: Запись разговоров в базу mysql..

Сообщение Sfinx »

Глупо для этого держать сам аудио-файл в БД, когда можно там хранить его уникальное имя на FS.
Никто никогда не будет шариться по файлам - сделали запрос, получили имя файла - достали файл.
При этом делать с файлами можно что угодно, в том числе и проигрывать его со смещением, как правильно написал kasper.
И зачем хранить сам файл в БД?
Ну, видимо бекап и удаление файлов Вам не нужны как класс - мои соболезнования. Если нужны - так прикиньте че там надо делать для каличного ФС-решения. В случае базы - обыкновенный дамп и "delete from" решают вопрос легко и непринужденно.
Потрясающе. Т.е. для запроса каждого файла понадобится делать запрос в БД, затем вытаскивать оттуда нужный файл?!!
Не проще ли не страдать маразмом и не создавать линки в браузере на файлы?!!
Соответственно для того, чтобы открыть нужный файл, нужно будет сделать минимум операций.
Но у некоторых - свой особый путь...
Открою Вам великую тайну - да, каждый раз когда надо проиграть файл он считывается из БД. И в чем тут проблема ? Операций таки-да, минимум - одно единственное чтение. Ну конечно, в случае ФС все совершенно не так - запрос к ФС мы ни фига производим, файл у tma, походу, сам волшебным образом попадает в броузер/player, силой мысли ебонента. Видите ли tma - файл надо сначала найти, открыть, прочитать, запихнуть в буфер, передать по сети и т.д. Особенно попробуйте на досуге это сделать, когда файлов в одной директории много - скажем N миллионов и/или они раскиданы по нескольким сервакам.
ASR = Answer Seizure Ratio?
Дык, прям как дети гор - top ссылка в google и пальцем в небо. http://en.wikipedia.org/wiki/Speech_recognition
"Мыши плакали, кололись, но продолжали есть кактус." (C).
Ваше право страдать маразмом. Вы даже усиленно пытаетесь найти оправдания, правда пока что какие-то жалкие попытки (особенно про линки в браузере :lol:).
Даже в случае voicemail/etc удобнее файлы хранить на файловой системе на отдельном сервере, но никак не в БД.
Ага, суровые челябинские астерисководы аля tma продолжают тыкать юзверей носом прямо в файлы - нефиг понимаешь ли броузерами пользоваться ! Это же маразм ! Наши продвинутые деды юзали ФС, и мы, такие же продвинутые, будем, потому что, бл#дь, принципиально ;)

А мы еще и voicemail'ы храним в базе, свят-свят-свят ...
Хотя бы только из-за того, что скорость поиска конкретного файла на файловой системе будет намного выше (В БД нашли нужную запись, взяли имя файла - обратились к нему), чем в случае хранения его в БД (В БД нашли нужную запись, выгрузили файл на файловую систему сформировав ссылку, обратились к нему).
Ну да, лишнние 50-100ms это веский довод. Побежал все на файлы переделывать, а то вдруг юзверя увидят, что такая серьезная задержка есть, будут корить и упрекать ... ;)
В любом случае работа с аудио-файлом возможна при его предварительной выгрузки на файловую систему!
Смысл делать дополнительные действия, засовывать файлы в БД, увеличивать ее размер и уменьшать быстродействие?
А если индекс накрылся? Восстановление/резервирование/etc? Жуть какая-то. БД - транзакционные, не знаю как там блоб хранятся, но если они еще и в транзакшин лог будут попадать - это просто жесть.
Ваш SQL сервер просядет просто мгновенно при более-менее большом объеме данных - это ж нужно какие винты иметь шустрые, чтобы постоянно перемалывать такие объемы между памятью и диском?
Че за фантасмагорические страшилки на ночь глядя ? Вводный курс по базам tma явно пропустил в детстве - даже без индекса (хотя на на моей памяти он ни разу не накрывался, да и чего бы это ему такое делать с собой-то) БД продолжает работать как ни в чем не бывало - просто медленней. Видите ли, tma - команда "create index", то бишь его создание и/или перестроение есть в стандарте SQL с незапамятных времен. Даже если индекс вдруг испугается tma, и "накроется", в чем я очень сильно сомневаюсь - то его можно будет легко и быстро пересоздать с помощью вышеупомянутой команды.
И с БД все зашибись, можете отложить валерьянку в сторону, и транзакции работают и винты обыкновенные и ничего не перемалывается, конечно кроме заржавевших мозгов с татуировкой "ФС forever".
Rus

-----------
SfinxSoft
http://sfinxsoft.com
tma
Сообщения: 1809
Зарегистрирован: 18 сен 2010, 20:50
Контактная информация:

Re: Запись разговоров в базу mysql..

Сообщение tma »

Sfinx выдает желаемое за действительное.
Поработайте с БД, посмотрим. У нас не так давно из-за проблем с диском накрылась БД, так ее восстановление из бэкапа заняло почти всю ночь. А это биллинг - без него вообще нихрена не работает, как ни странно. Представляю, если бы мы туда писали еще и какие-нибудь блоб - страшно подумать.
Конечно в том, что восстановление заняло столько времени я сам виноват - у нас был бэкап недельной свежести, сам-то он восстановился где-то за пол часа, но потом пришлось накатывать транзакционные логи - вот это была, простите, жопа.
И таки да - у нас не MySQL/PostgreSQL используется, они такого не поддерживают... Без свежего бэкапа мы просто потеряли бы данные за неделю.
А теперь подумаем, что вам каждый день нужно делать бэкап БД с несколькими десятками Гб блобов... Красотища...
Не говоря о том, что делать бэкап и хранить его на том же сервере, мягко говоря нонсенс... Т.е. его еще придется дергать по сети.
Предлагаю перейти от теории к практике. Sfinx, проведите тесты и выложите сюда результаты.
SkyTel OU - облачная АТС, DID, SIP-транк с посекундной тарификаицей, мобильная связь
http://skytel24.com | Эстония: +372.333.55.10 | Россия: +7(495)4019900
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH