Вот нашел одну MemSQL (у нее большая скорость из-за того, что она хранит все в озу).
Есть ли что-то побыстрее? Ради этого даже куплю SDD (хотя против sas, sdd не быстрее), сервак не слабый, потянет все) ресурсы тоже не ограничены.
Так же есть одно но.. она должна не мешать работе Sphinx.
Также используется HHVM.
И в mysqli есть такие таблицы, которые хранятся в озу.. Это не одно и то же, что и MemSQL?
Нужна так же совместимость.
В скором memcahe присоединится к этой связке.
hhvm+nginex 1.5.9 + apache 2.4.7 mod_php.
Для поиска Sphinx.
Приложение написана на : Html5+ css3+ js+ php5.4 к увы используется так же htaccess (Для закрытия просмотра файлов)
Цель:
Быстрая отдача
(можно как-то прицепить для отдачи Sphinx?)
Если да то все супер будет.. Но мне кажется что нельзя.. Хочется тогда по той же технологии.
Не так важно:
Запись не так важна, как и изменение-удаление.
@hadra, после вашей фразы "можно как-то прицепить для отдачи Sphinx" у меня как-то закрались сомнения что вы не понимаете предмета разговора, и не можете сформулировать вопрос.
@Fesor Не, это паразитическая речь. Если бы не понимал, то вопроса не было.
Просто торопился. Соглашусь что я не профессионал. Я в других областях разбираюсь лучше.
Sphinx для поиска, но может стоить сделать костыль. В базах я тоже не особо.
1. SSD быстрее SAS, если в RAID поставить парочку.
2. mysql на hdd и на ssd показывает примерно одинаковую производительность.
3. в mysql есть возможность хранить in-memory таблицы
4. Вам нужна не столько быстрая база, сколько грамотно настроить базу. Той же MySQL можно дать достаточно памяти под кэш, индексы она хранит в памяти + надежность которую ни Redis ни MemSQL не смогут дать.
5. Используйте Redis/Memcached для хранения сессий (они тоже свой футпринт дают)
6. Как альтернатива MySQL - используйте Postgress, он все ж чуточку шустрее и дает больше возможностей для построения индексов. Насколько я помню в 3-ей версии HHVM допилили драйвер под нее.
После роstgress не придется переписывать приложение ?
Где можно почитать по настройку Mysql. Я думаю что можно выжать из нее еще что-то (до этого стандартные стояли).
И для php лучше nginx или apache?
Сейчас склоняюсь под apache. Nginx для статистки лучше.
Memcache еще не начал использовать.. не разобрался в нем.
@hadra, nginx + php-fpm пошустрее (он просто будет проксировать запросы в fpm) и менее прожорливо к памяти. Так же есть свои плюшки. В плане настройки доступов - все что угодно можно настроить.
@hadra, nginx непосредственно php не обрабатывает, он делегирует все это в php-fpm, который вешает свои воркеры. Я не знаю что вы там читали, но рекомендую перечитать. И что-то мне подсказывает что в итоге вы упретесь в производительности в архитектуру вашего приложения, выборки из базы и т.д.
Возможно еще стоит упомянуть MongoDB. Тоже работает с оперативкой благодаря этому должна быть неплоха в скорости. И в отличии от того же Редиса похожа на БД. Все-таки редис назвать базой данных у меня язык не поворачивается )
MySQL таблицы типа Memory (которые хранятся в памяти) я на практике ни разу не видел. Т.е. если нужна таблица для быстрого доступа то используют Мемкеш, Редис и т.д. Postgress наверное почти единогласно все признают лучше чем MySQL, но с ним я не работал так что много не скажу. Единственно что его надо суметь настроить.
@hadra MongoDB медленная на запись, так же что бы все летало под монгой нужно изначально базу проектировать с расчетом на агрегаты. То есть каждая коллекция будет представлять из себя уже сформированную выборку (без фанатизма конечно), то есть выигрывать в производительности она может только за счет денормализации. Но это увеличивает время записи, усложняет поддержку целостности базы и т.д.
Возможно я где-то ошибаюсь, но монго как раз на запись должна выигрывать. Погуглил бенчмарки: www.moredevs.ro/mysql-vs-mongodb-performance-benchmark
По селекту он конечно проигрывает, чем слегка разочаровывает...
Плюс в свое время натыкался на такую штуку: www.tokutek.com/products/tokumx-for-mongodb
К сожалению на практике не пробовал. Все-таки мне больше по душе реляционные базы данных )
@Jailbird, на запись она не выигрывает. В большинстве бенчмарков пренебрегают тем фактом что mongodb по умолчанию использует отложенную запись. То есть она сначала собирает все в базе и только потому записывает. В этом случае конечно прирост будет, но в случае потери питания, могут пострадать данные. Так же там много нюансов при реализации транзакций и т.д. Не говоря уж о том, что в случае с MySQL как правило вы обновляете одну запись, ибо нормализация данных. В монге же за целостность отвечаете вы, так что если у вас тысячи связанных записей, один апдейт превращается в 1000-ю.
Все зависит от архитектуры, типа приложений и т.д. Универсальные инструменты всегда будут медленнее специализированных.
Надежность, как и архитектура, это отдельные темы. По-этому я и не очень люблю все эти базы работающие с оперативкой. В мускуле тоже можно настроить сброс информации на диск (я про innodb_flush_log_at_trx_commit) и получить скорость, но потерять надежность. Но все же по скорости она (Монго) получается быстрее, хотя за это и расплачиваемся надежностью.
Я вообще сторонник того что в 90% подойдет MySQL. Если хочется что-то лучшее, то я бы предложил Постгресс. Редис и иже с ним, как вы и писали, для сессий, каких-нибудь событий к которым идет частый запрос и т.д.
Но есть и ярые сторонники NoSQL бд типа Монго, наверняка они смогли бы привести больше аргументов в их пользу, но это не я :)
@azrail_dev А еще побыстрее ??
Я знаю что есть.. я месяц назад читал, там есть база которая по тестам производительности как сфинкс. Только она быстрее и это запись а не выборка.
Там больше 200 000 w/s на запись. Железо в 4 раза слабее чем у меня.
@hadra, вы же понимаете что все популярные СУБД очень быстрые? Все зависит от задачи, если вам нужна большая скорость записи - CouchDB. Postgress имеет поддержку отложенной записи (то есть вы можете в коде просто поставить данные на запись и не дожидаться окончания процесса). Словом все от задачи отходит, универсальной и быстрой базы нету.