Вот так и сделал сейчас. Чтение из кэша. А при промахе — из основной БД. Запись — в отдельную бд. Раз в час — миграция данных.
Но, мне кажется, это костыль.
Шардинг внутри монги не особо помогает. Ключи нормально распределены, поэтому блокируется, конечно, меньше. Но все равно, блокировки есть.
Никто не спорит, что при увеличении количества инсертов надо будет делать шардинг.
Но то, что при 120 insert/s я уже не могу получить доступ на чтение к данным, которые целиком находятся в оперативной памяти, — это за гранью моего понимания.
What type of locking does MongoDB use?
However, when a write lock exists, a single write operation holds the lock exclusively, and no other read or write operations may share the lock.
На Riak тоже отзывы не очень позитивные. На средних базах он хорош. А когда число записей превышает 50 миллионов, уже начинается просадка по производительности.
Впрочем, это все с чужих слов. Сами не тестили.
Зато эти требования довольно строгие. Необходимо, чтобы все запросы на выборку данных по ключу укладывались… ну хоть в 10мс. А лучше в 1-3мс. Если не укладываются — срабатывает внешний таймаут.
Задержка между нодами 0.1 мс, так что с сетью проблем нет.
Сервер один — это пока он один. Мы не можем оценить, сколько и каких нам потребуется серверов, так как на довольно мощном железе столкнулись с проблемами на «детских» нагрузках.
Я не понимаю, почему монго заставляет мои операции выборки ждать освобождения write lock, если: 1) я сделал insert и выбираю точно не эту запись; 2) Вся бд и индексы легко помещается в памяти.
Если она так иногда подтормаживает, когда памяти больше, чем надо, то что будет, когда размер БД превысит размер RAM? 10-20 секунд на некоторые операции?
Думаете, на одном сервере от нее будет толк?
На сколько я знаю, кассандра хорошо масштабируется в кластере. Но у нас и один сервер-то не загружен нормально.
Диски SAS 15k RPM (какие именно, без понятия). 4 диска в RAID10. Raid аппаратный, 3ware 9750.
О SSD думали. Тестили. Как-то вообще не заметили выигрыша для монго.
Самое интересное, что диск особо-то и не занят.
Total DISK READ: 0.00 B/s | Total DISK WRITE: 157.69 K/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 19037 be/4 mongodb 0.00 B/s 703.82 K/s 0.00 % 4.55 % mongod --config /etc/mongodb.conf
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.