Кстати, у нас Coherence бегает как на железе, так и на виртуалках. Я слышал, что он не любит виртуалки, но по-моему это всё из-за рассинхронизации времени, так что если синхронизировать время по ntp, то всё должно быть ОК. По крайней мере у нас в продакшене проблем из-за этого не было.
Что касается боли — опять же не приходилось особо её испытывать. Да, нашли одну хитрую багу в conditional index, отрепортили в Оракл, сделали свою имплементацию индекса и поехали дальше, до сих пор работает. Наоборот, было очень интересно разбираться, как и что работает, потому что там всё достаточно логично.
Саппорт — ужасный. У нас был телефонный разговор с двумя людьми, которых представили как архитекторов Coherence, но у нас было ощущение, что мы позвонили в Apple, потому что самым популярным ответом на наши вопросы типа «а как правильно сделать вот такую штуку» был «you don't need it».
Вот чего сильно не хватало в Coherence — это распределенной очереди, которая есть в Hazelcast.
А вы используете что-нибудь, кроме функциональности распределенной хеш-мапы? Просто когда у нас было тестирование разных гридов, hazelcast выглядел не очень стабильно, причем и сами представители компании говорили, что они пока не production-ready.
А мне скевоморфизм больше нравится, с самого появления нового плоского дизайна не понимал, почему все дизайнеры так охотно его используют. Изображения больше не хочется потрогать, кнопки не хочется нажать, какое-то оно всё стало гламурное.
Во-втором случае можно подтягивать данные в кеш из БД по факту запроса данных (в простонародье read-through).
Я как раз делаю такой опенсорсный кластерный кеш, примерно через месяц планирую выкатить функциональность, которая позволяет не ходить самому в базу, а просто делать запрос в кеш, который сам пойдет в БД за данными и закеширует их (при этом кеш отдает данные, как ваш доменный объект, надо просто в конфигурации сконфигурить структуру объекта). Способ доставания из БД конфигурится: можно сделать обычный маппинг на таблицу БД, можно вставить кастомный sql запрос, можно вызывать хранимую процедуру, можно использовать для каждого поля объекта свой способ, можно вообще один объект доставать из разных БД.
Поддержка пока только для PHP, но следующим релизом должна пойти поддержка Ruby либо Python.
Похоже, что вы просто используете MongoDB как кеш (насколько я понял вы в неё публикуете все данные, но читаете только небольшой набор самых свежих), тогда почему именно MongoDB, а не обычный кеш?
Кстати, довольно разные (хоть и не противоречащие друг другу) ответы на вопросы, особенно на последние два. Это из-за разных условий ведения бизнеса в РФ и США, разного уровня проектов или что-то еще?
Кстати, интересно, что сейчас чаще используют в качестве хранилищ для хайлоада в вебе (PHP, Python, Ruby)? Просто берут Mongo и не парятся или пытаются масштабироваться на реляционных базах через master-slave репликацию и шардинг?
И насколько часто получается так, что сделали проект на MySQL, а когда пошла нагрузка, то поняли, что существующую модель данных на Mongo не перевести?
Что касается боли — опять же не приходилось особо её испытывать. Да, нашли одну хитрую багу в conditional index, отрепортили в Оракл, сделали свою имплементацию индекса и поехали дальше, до сих пор работает. Наоборот, было очень интересно разбираться, как и что работает, потому что там всё достаточно логично.
Саппорт — ужасный. У нас был телефонный разговор с двумя людьми, которых представили как архитекторов Coherence, но у нас было ощущение, что мы позвонили в Apple, потому что самым популярным ответом на наши вопросы типа «а как правильно сделать вот такую штуку» был «you don't need it».
Вот чего сильно не хватало в Coherence — это распределенной очереди, которая есть в Hazelcast.
hazelcast сырой, лучше смотреть на JBoss Infinispan либо GridGain
Я как раз делаю такой опенсорсный кластерный кеш, примерно через месяц планирую выкатить функциональность, которая позволяет не ходить самому в базу, а просто делать запрос в кеш, который сам пойдет в БД за данными и закеширует их (при этом кеш отдает данные, как ваш доменный объект, надо просто в конфигурации сконфигурить структуру объекта). Способ доставания из БД конфигурится: можно сделать обычный маппинг на таблицу БД, можно вставить кастомный sql запрос, можно вызывать хранимую процедуру, можно использовать для каждого поля объекта свой способ, можно вообще один объект доставать из разных БД.
Поддержка пока только для PHP, но следующим релизом должна пойти поддержка Ruby либо Python.
И насколько часто получается так, что сделали проект на MySQL, а когда пошла нагрузка, то поняли, что существующую модель данных на Mongo не перевести?
Заранее спасибо.
Видео не планируете выложить?