NoSQL или Ehcache кеширование? - PullRequest
12 голосов
/ 19 мая 2010

Я создаю веб-приложение Планировщика маршрутов, используя Spring / Hibernate / Tomcat и базу данных mysql, У меня есть база данных, содержащая данные только для чтения, такие как координаты автобусной остановки, время шины, которое никогда не обновляется. Я пытаюсь заставить приложение работать быстрее, каждый раз, когда приложение запускается, оно преобразует около 1000 операций чтения в базу данных для расчета маршрута.

Я установил Ehcache, который значительно улучшает время чтения из базы данных. Сейчас я настраиваю распределенное кэширование terracotta + Ehcache, чтобы разделить кеш с несколькими JVM Tomcat. Это кажется немного сложным. Я пробовал memcached, но он работал не так быстро, как ehcache.

Мне интересно, подойдет ли MongoDb или Redis. У меня нет опыта работы с nosql, но я был бы признателен, если у кого-то есть идеи. Что мне нужно, так это быстрый доступ к базе данных только для чтения.

Ответы [ 3 ]

12 голосов
/ 19 мая 2010

Я установил Ehcache, который значительно улучшает время чтения из базы данных. Сейчас я настраиваю распределенное кэширование terracotta + Ehcache, чтобы разделить кеш с несколькими JVM Tomcat. Это кажется немного сложным.

Поскольку ваши данные предназначены только для чтения, я испытываю желание сказать, что вы могли бы жить без распределенного и реплицированного кэширования , если только издержки начальной загрузки кэшей не столь критичны (и в этом случае настроить Ehcache не так сложно, вам просто нужно знать, куда вы идете). Так что, если вы думаете, что вам это действительно нужно, возможно, попросите более конкретные указания.

Мне интересно, подойдет ли MongoDb или Redis. У меня нет опыта работы с nosql, но я был бы признателен, если у кого-то есть идеи. Мне нужен быстрый доступ к базе данных только для чтения.

Прежде всего, если вы пойдете по пути NoSQL, забудьте о Hibernate (хотя это может и не быть проблемой). Во-вторых, мне действительно интересно, что является более сложным: (не) настройка Ehcache для распространения (я все еще не уверен, что вам это нужно) или изменение вашего подхода для чего-то радикально отличного (что большинству корпоративного бизнеса VAST не нужно) , В-третьих, ничто не будет быстрее, чем чтение данных из памяти в той же JVM.

Подводя итог: я хотел бы 1. рассмотреть возможность не использовать распределенное кэширование (и попрощаться с проблемой конфигурации) или 2. настроить Ehcache для распределенного кэширования (я думаю, это менее сложно, чем изменить весь ваш подход).

7 голосов
/ 19 мая 2010

если вы хотите попробовать маршрутизацию, вы можете даже взглянуть на Neo4j, см. блог об использовании алгоритма A * для

1 голос
/ 17 ноября 2010

Прежде всего, mongodb не является кешем как таковым. Это постоянное хранилище данных, так же как MySQL является постоянным хранилищем данных.

так что теперь ваш вопрос сводится к "следует ли мне использовать ehcache или redis". воспользовавшись ehcache, я могу вам сказать, что это довольно хорошее решение для распределенного кэша, которое позволяет выполнять репликацию / кластеризацию, аннулирование кэша, мониторинг и инструментарий.

, поскольку ваши данные доступны только для чтения, будет работать и простая распределенная карта, такая как Hazelcast. его довольно просто использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...