Кэш для большой базы данных только для чтения - PullRequest
4 голосов
/ 11 мая 2010

Я строю сайт на Spring, Hibernate и Mysql. База данных mysql содержит информацию о координатах, местоположении и т. Д., Она никогда не обновляется, только запрашивается. База данных содержит 15000 строк координат и 48000 строк координатных соединений. Каждый раз, когда обрабатывается запрос, приложение должно прочитать все эти координаты, что занимает около 3-4 секунд. Я хотел бы настроить кеш, чтобы обеспечить быстрый доступ к данным. Сейчас я изучаю memcached, не могли бы вы посоветовать, будет ли это моим лучшим вариантом?

Ответы [ 3 ]

3 голосов
/ 11 мая 2010

Хотя есть реализация CacheProvider для Memcached, вот мои мысли:

  • Memcached официально не поддерживается поддерживается , вышеупомянутый CacheProvider является сторонней реализацией (хотя это может и не быть проблемой).
  • Memcached запускает out-process , это кэш клиентского сервера и есть сетевые и маршалинговые издержки для каждого запроса .
  • Кэш, такой как EhCache, запускает в процессе (в той же JVM), поэтому доступ осуществляется быстрее (независимо от того, используете ли вы хранилище памяти или хранилище дисков) и не будет никакой сетевой связи при чтении -единственный режим между узлами кластера, т. е. никаких служебных данных
  • Я думаю, что Ehcache будет значительно быстрее (см. Ссылки ниже).

Другими словами, я бы пошел на Ehcache.

Ссылки:

2 голосов
/ 11 мая 2010

Интересный вопрос. Я очень успешно использовал ehcache в спящем проекте, но тогда у меня были не только данные только для чтения.

Memcached изначально не был предназначен для использования в режимах, подобных спящему, хотя я не вижу причин, по которым его нельзя использовать. Единственный недостаток использования memcached в вашем контексте заключается в том, что вам, вероятно, не нужна особенная возможность распределенного кэша, поскольку на одном сервере у вас, вероятно, будет достаточно памяти, чтобы справиться с нагрузкой, и, таким образом, вы ничего не получите от нагрузки на клиентский сервер Memcached.

Не думаю, что вы пожалеете о своем решении использовать memcached. Он очень широко используется для кэширования веб-сайтов, я не вижу причин, почему вы не можете использовать его в своем контексте.

0 голосов
/ 11 мая 2010

Вы смотрели также на шарберги Hibernate? Hibernate позволяет размещать разные строки в разных базах данных, упрощая поиск. Это было доступно в течение прошлых 3 лет. Это - хорошее место для начала.

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