За десятки тысяч запросов в секунду я хочу видеть 60 000 -> + 90 000 запросов / секунду.
Моя настройка состоит из следующего:
пользователь ---> веб-приложение -> очередь сообщений -> анализатор -> база данных?
Я должен отметить, что парсер в настоящее время может анализировать / обрабатывать около 18750 записей в секунду, используя COPY, поэтому мы ограничены в этом отношении, пока не начнем добавлять больше парсеров - сейчас это не большое беспокойство для меня.
У меня есть система, в которой требуется возможность массовой загрузки как можно большего количества записей. Эта же система (или она может отличаться в зависимости от того, как вы к ней подходите) должна иметь возможность отвечать на запросы аналитического типа, такие как этот:
wonq = "select sum(amount) from actions where player = '@player' and " +
"(type = 'award' or type = 'return') and hand = hand_num"
lostq = "select sum(amount) from actions where player = 'player' and " +
"type != 'award' and type != 'return' and hand = hand_num"
..... 10-15 тысяч раз (на пользователя), так как они отключены от другого стола. Излишне говорить, что пока мы разбиваем эти результаты на 10 страниц.
Я посмотрел на следующее: (при условии, что они все на одном сервере)
mysql (рег. Пробежки мельницы rdbms) - смог достичь диапазона 15-20 тысяч запросов / секунду; в текущих условиях, если мы пытаемся масштабировать это, нам нужен отдельный хост / база данных каждый раз, когда нам нужно масштабировать - это невозможно сделать
couchdb (db с ориентацией на документ) - не прерывать 700 запросов / секунду; Я действительно надеялся, что это спасет нашу задницу - ни единого шанса!
vertica (столбчато-ориентированная дБ) - скорость 60000 запросов в секунду, закрытый источник, очень дорогой; это еще вариант, но мне лично он вообще не понравился
tokyocabinet (на основе хэша) - в настоящее время весит 45 000 вставок / секунду и 66 000 выборок / секунду; вчера, когда я писал это, я использовал адаптер на основе FFI, который выполнял со скоростью около 5555 запросов в секунду; это, безусловно, самая быстрая и потрясающая база данных, которую я когда-либо видел !!
terracotta - (кластер vm) в настоящее время оценивает это вместе с jmaglev (не может дождаться, когда выйдет сам maglev) - это САМЫЙ МЕДЛЕННЫЙ!
возможно, я просто неправильно подхожу к этой проблеме, но я ВСЕГДА слышал, что RDBMS были такими же медленными, как и все, черт возьми, - так где эти сверхбыстрые системы, о которых я слышал?
Условия испытаний ::
Просто чтобы люди знали, что мои спецификации на моей коробке разработчика:
dual 3.2ghz intel, 1 gig ram
Mysql mysql.cnf правки были:
key_buffer = 400M # was 16M
innodb_log_file_size = 100M # non existent before
innodb_buffer_pool_size = 200M # non existent before
UPDATE ::
Оказывается, терракота может иметь место в нашей структуре приложения, но она не будет заменять нашу базу данных в ближайшее время, так как ее скорость ужасна, а использование кучи - отстой.
С другой стороны, я был очень рад видеть, что рубиновая библиотека NON-FFI от Tokyocabinet (имеется в виду тиран / кабинет) очень быстрая и сейчас это первое место.