last day (15 days later) » 

11:58
0
A: Что лучше для хранения сообщений в чате, файловая система или MySQL?

DarthБаза данных является надстройкой над файловой системой. Так что, отвечая на ваш вопрос напрямую - файловая система быстрее. Однако вы не сможете воспользоватся ей непосредственно, вам придется писать код, который будет отвечать за сериализацию, поиск и сохранение данных (этим как раз занимаются б...

Чат я в пример привел не просто так. Вот для получения в сообщения "в реальном времени" ajax отправляет запрос раз в секунду при этом я так понимаю при большом кол-ве пользователей БД может стать очень плохо в отличии от хранения какой то информации в файлах или я ошибаюсь?
@Mister_X а зачем вы извращаетесь с ajax-запросами вместо того чтобы сделать нормальный вебсокет?
ну не на всех хостингах разрешены сокеты =(
@Mister_X нафиг такие хостинги тогда (да и вообще зачем извращаться с хостингами, если есть полноценные нормальные VPS/VDS)
@Mister_X Вам совершенно не обязательно делать запрос в БД каждый раз, когда какой-то пользователь проверяет свои сообщения. Вы можете, например, завести очередь новых сообщений в памяти и обновлять её одним запросом для всех пользователей раз в X сек, а по запросу от пользователя - доставать оттуда и возвращать ему, не мучая бд. А если к этому делу еще и вебсокет прикрутить - то можно и не хранить, а сразу рассылать по адресатам.
11:58
а вот как в памяти хранить?
@Mister_X я думаю удобнее всего в массиве.
@Darth логичный вопрос — где хранить массив, чтобы он из памяти не исчез?
Очень раздражают такие теоретики, которые уносятся в голубые выси с вебсокетами, очередями, хранением в памяти. Человек делает первые неуверенные шажки, у него даже и одного пользователя в чате нету, и никогда не будет больше 5. Ему надо помочь сделать этот чат на яваскрипте с setTimeout, а не рассказывать как космические корабли бороздят просторы Большого театра. Объяснить, что сам вопрос бессмысленный, в скорость он не упрется вообще никогда, и что базы данных бояться не надо, а надо научиться с ней работать. А не вот это вот всё
@Ипатьев я тоже так думал про свой ajax-чатик, а потом он случайно попал на главную страницу джойреактора и умер от нагрузки ¯_(ツ)_/¯
@andreymal а начали бы сразу писать с блекджеком и шлюхами - и вообще никакого чата бы не было, ни в реакторе, ни без
11:58
@Ипатьев вот как раз таки я бы хотел бы более развернуто изучить данную тему чем просто javascript с setTimeout... на этом чат создать не проблема и работать будет и принимать и отправлять сообщения, а вот нагрузка на сервак как же или просто забить на неё со словами "И так сойдет" и сидеть на ajax?
@Mister_X вот и сделайте, если не проблема. Как раз начнете изучать, вместо того чтобы языком трепать.
"Сидеть" вам никто не предлагает. Вам предлагают ДЕЛАТЬ. Но постепенно. А не разевать рот на всё сразу. Переделать механизм работы готового чата в сто раз проще, чем делать всё с нуля. Любой проект должен начинаться с минимального рабочего прототипа. И дальше развиваться в зависимости от реальных потребностей, а не влажных подростковых мечтаний про междупланетный шахматный чат. На железе 2000-х годов работали огромные чаты типа Кроватки, когда слова "вебсокет" еще и в проекте не было. А ваш прямо загнется.
Переделать механизм работы готового чата в сто раз проще, не проще, если изначально все пошло по влагалищу... потом проще все переписать, чем довести до ума
файловая система быстрее - вовсе нет. В ряде случаев БД окажется быстрее. Вот, пример SQLite: 35% Faster Than The Filesystem
@AlexanderPetrov Отличная иллюстрация к моему ответу - пример того, как чей-то самописный код работает с файловой системой медленнее, чем это делает БД) В данном конкретном случае фокус в том, что sqlite пишет блобы в один файл, а не в разные, и эти 35% по всей видимости уходят на выделение места под файл
@Ипатьев я не знаю как Вас суда занесло но Ваши ответы лично мне помощи не принесли для того что бы можно было хоть как то более развернуто изучить данную тему. Чат еще раз повторюсь я привел для примера так как в чате может быть большая нагрузка ... так же в пример могу привести какой то игровой сервер который при хорошем онлайне в БД пишет статистику и время от времени хостер может блокировать доступ к бд. И зачем переделывать что то когда можно сделать сразу нормально и это нормально дорабатывать и возможно улучшать, а не переделывать потом.
@Darth я так понимаю медленная работа может быть связана из-за объема сохраненных данных в файле, а если я к примеру буду сохранять к примеру id последней записи и далее если id обновилось из бд доставать новое сообщение ... просто хочется как то избежать нагрузки на бд
11:58
@Mister_X меня "суда" занесло после 20 лет разработки. Как результат, я могу предсказать любой тупой вопрос. Как например этот, "про нагрузку на БД", на который я выше уже ответил. БД мы в глаза никогда не видели, что такое нагрузка - не знаем, но уже её боимся :)
@Ипатьев я бы не задавал бы этих вопросов если бы хостер периодически не отключал бы БД из-за большой нагрузки.
@Mister_X слать в пень таких неадекватных хостеров и брать нормальный VPS/VDS
@Mister_X если у вас тупит бд на хостинге, то именно этот вопрос и надо задавать. Потому что он совершенно стандартный, и ответ на него давно известен. Нормальная БД на нормальном сервере никогда не будет тормозить на пустом месте. Следовательно у вас либо хостинг за 3 копейки с оверсейлом, либо кривая БД. Либо и то и другое. Судя по тому, что "к примеру id последней записи" вы собираетесь хранить в файле, это значит что про индексы, которые отвечают за производительность БД, вы даже не слышали.
@Ипатьев У меня сейчас через setTimeout каждые 5 секунд запрос отправляет в БД на проверку на наличие новых сообщений. Скажу честно про индексы не слышал и не знал вот за это Вам спасибо ... сейчас буду изучать что это такое и с чем его едят =)
@Mister_X я правильно понимаю, что у вас в БД нет ни одного индекса? Вы хотя бы интересовались, какой именно запрос грузит базу? по какому полю вы делаете сортировку, чтобы выбрать последнее сообщение?
11:58
@Ипатьев ТП просто отвечает у Вас нагрузка на БД и всё. Сортировку делаю по id
@Mister_X ну на id в любом случае должен быть индекс. Надо разбираться, какой именно запрос грузит базу. И виновата ли база вообще. Если например у хостера не хватает памяти под индексы, то даже при их наличии нагрузка будет огромная. В целом ваша проблема не в том, "что быстрее", а "как правильно пользоваться". И вам ндо не искать что быстрее, а учиться пользоваться тем что есть. В кривых руках и феррари не поедет, если её с ручника не снять. Но это не значит что жигули быстрее.
Судя по тому, что вебсокет на хосте не разрешен, у вас реально хостинг за копейку, и вы все свои проблемы решите просто переехав на нормальный сервер
Всем спасибо за ответы. Пошёл переваривать полученную информацию.
объем базы то какой вообще? чего вы сможете делать с файлами если их будет на 200 гигов, например? ладно, даже пусть 1 гбайт.
@teran хм а если максимальный размер файла будет всего 10 КБ?
@Ипатьев в будущем собираемся менять сервак, но пока есть что есть и как то надо исправить проблему тут что бы не нагружать БД и её не выключали.

last day (15 days later) »