Повысит ли производительность опрос из базы данных SQL вместо файла для приложения чата? - PullRequest
0 голосов
/ 05 февраля 2012

Я работаю над приложением чата, для которого я хотел бы использовать базу данных SQL.

Моя проблема в том, что после нескольких поисков в Google у меня есть люди, которые говорят мне с одного сайта, что я используюБД будет работать намного медленнее, чем обычный файл (например, текстовый или JSON-файл), но на некоторых других сайтах люди говорят обратное.И я не знаю о вас, ребята, но когда дело доходит до создания веб-приложений для пользователей, пользователи всегда на первом месте.

Так что, как бы мне не хотелось использовать БД SQL, как 1.) У меня есть хороший опыт работы с ним и 2.) Это позволяет мне сделать приложение намного более холодным (больше возможностей).но если это замедлит работу пользователей ( заметное отставание ), то это будет нет-нет.

В любом случае, я буду постоянно "опрашивать" сервер с помощью AJAXи PHP для проверки файла / БД (для новых сообщений, запросов контактов и т. д.).

Кроме того, если вам интересно, приложение не будет похоже на чат 1-к-1, оно будет иметь «комнаты»«где несколько пользователей могут присоединиться и поговорить со всеми пользователями, которые присоединяются. Пользователи также смогут запросить« приватный чат »с другим пользователем, когда открывается соединение 1-к-1.

Итак,База данных MySQL ИЛИ скучный файл TEXT / JSON / OTHER, что касается производительности?

О, еще одна вещь, я не хочу использовать какие-либо сторонние библиотеки или API.Ненавижу полагаться на работу других людей (была подведена много раз).

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

Если вы хотите внедрить клон IRC, я думаю, что вы выбрали все неправильные инструменты.

Лучший способ сделать это - написать собственный HTTP-сервер, который обрабатывает все в памяти,Нет базы данных, нет постоянного опроса файлов.Когда приходит сообщение, вы просто просматриваете правильный список в памяти и отправляете сообщение другим пользователям.Для подключения браузера к серверу я предлагаю « Comet » (с веб-сокетами для браузеров, которые поддерживают их, если вам это нравится).

PHP, вероятно, недля этого предпочтительный язык, потому что почти вся работа, выполняемая с помощью PHP, основана на традиционных коротких изолированных запросах.Для длительного процесса, который обслуживает несколько клиентов в режиме реального времени, я бы предложил что-то вроде Python или Node.js.

0 голосов
/ 16 июня 2013

Вы на самом деле не хотите хранить чаты в файлах, которые могут создать кошмар управления, я бы порекомендовал вам использовать MySQL и убедиться, что он работает, возможно, использовать Sockets вместо AJAX-опроса, Sockets будет действительно хорошо масштабироваться .

Однако не так много о том, как можно интегрировать чаты на основе сокетов с MySQL.

Я провел несколько тестов и у меня есть базовый пример: https://github.com/andrefigueira/PHP-MySQL-Sockets-Chat

Используется Ratchet (http://socketo.me/) для создания сервера чата в PHP.

И вы можете отправлять сообщения чата в БД, отправляя на сервер JSON информацию о том, кто в чате (если, конечно, у вас есть сеансы пользователя)

...