Перефразирую вопрос так как задал не совсем то: как подготовить видео для вещания его через dash?И желательно разжевать что такое манифест и фрагментированый mp4 (fmp4), а то вообще не могу понять что делать надо. Спасибо
ralaton121: Думаю надо изложить схему по которой работает мой проект,он немного отличается от стандартной схемы:
В общем пользователь вносит деньги себе на счет (и таких пользователей допустим 1 млн - так как это соцсеть) запись о количестве внесенных денег записывается в его графу BALANCE. Пользователь совершает определенное действие за которое с его счета снимается определенная сумма (таких действий будет много,1 пользователь генерирует примерно по 20 таких событий в день и так тысячи пользователей) и зачисляется на баланс другого пользователя ( т.е деньги постоянно перетекают из баланса одного пользователя в баланс другому). Допустим я при каждом таком действии изменяю баланс у обоих пользователей т.е веду список как вы предложили выше (вариант с обращение к визе за списком не подходит так как он только хранит изначальный баланс пользователей да и впринципе вариант не для этой ситуации). Кстати как этот список хранить? . Так, теперь самое важное, это вывод средств: пользователь начинает выводить деньги я сверяюсь с этим списком и если сумма не больше той которая у него есть то разрешаю вывод, иначе запрет. Т.е по сути ничего не поменялось,изменив этот список можно вывести столько сколько у тебя нету.
Думаю изложил понятно и получу более точный ответ.Спасибо)
Пума Тайланд: Я ответ выше прокомментировал, может есть варианты? По поводу блокировки системы при несогласованном выводе идея хорошая,но может поможете додумать её к моей ситуации?Спасибо)
Да и систему учета транзакций (логи) он сможет спокойно обойти написа скриптик который у пользователей будет снимать а ему перечислять, и в такой ситуации я ничего сделать не смогу так как логика приложения в этом и заключаеться т.е это не будет необычным случаем на который стоит обратить внимания
А если админ допустим в обход всех логов и учета внесет запись в БД в таблицу user (обычный запрос INSERT), создав нового пользователя с балансом каким он пожелает (так как у меня по сути соцсеть с балансом) и так как деньги в программе есть (другие пользователи их внесли но еще не выводили) он их cможет вывести и если это будет достаточно небольшая сума, то я этого даже не замечу. Как здесь быть?
xfg: Да погуглил уже,прочитал кучу ответов,в итоге все пишут что в основном используют первый вариант, но вот как доставать из этой общей таблицы (делать SELECT запрос) ленту пользователя ни одного ответа не нашел.
Есть еще вариант совместить эти 2 варианта т.е создать таблицу со всеми событиями и таблицу которая дублирет каждый пост для каждого подписчика,но вместо того чтобы хранить весь пост хранить только его идентификатор. Тогда будет проще делать выборку по 1 таблице. Но что-то мне кажеться не сильно от этого можно в плюс уйти
Иван Корюков: По поводу индексов: для индексов лучше использовать второй вариант, так как из 100к строк бд пойдет сразу к дубликатам постов для пользователя (если сделать индексы по id юзера для которого создаются дубликаты) и там уже остается только 1к строк (100 постов * на 10 подписок) из которых и составлять ленту.Но проблема в том что этот вариант очень и очень проигрышный (трата памяти в сотни раз больше (из-за дублирования поста для каждого подписчика),невозможность вести учет для конкретной публикации (количество лайков,просмотров и тд) и прочее неприятности).
По поводу джоинов,то про них я думаю лучше вообще забыть,так как будет страдать производительность да и шардиться будет невозможно (ну или с очень геморройными костылями).
Вот я и стою в ступоре,так как в 1 варианте трудно и накладно делать выборку, а во втором туева хуча минусов.
Иван Корюков: Плюсов второго варианта по сравнению с его минусами очень мало,а если точнее то он всего один - это возможность отдать ленту пользователя в один SQL запрос.Так что от 2 варианта уже отказался)
Иван Корюков: Спасибо за ответ. А можете рассказать как по первому варианту делать составление ленты пользователя? У меня из идей только брать список людей на которых подписан пользователь и доставать из этой таблицы событие которые сгенерировали люди из этого списка. Но проблема такого запроса в том что он очень тяжелый (если пользователь подписан например на 1000 человек), даже если всю базу поместить в redis. Вообщем как делать запрос для составление ленты?
xfg: Где то читал что вконтакте и фейсбук используют вариант с сохранение всех событий в одной таблице,так ли это?Если так то как они масштабируют эту схему?