Загрузка таблицы базы данных в память для использования - PullRequest
1 голос
/ 03 июня 2011

В поисковом приложении мне нужно отслеживать файлы и их расположение. В настоящее время я использую таблицу базы данных для этого, но поскольку мне приходится подключаться к БД каждый раз, когда мне нужно получить такие данные, это, очевидно, неэффективно. Есть ли способ загрузить таблицу в память и использовать ее? Мне не нужно будет изменять его, пока оно в памяти.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 03 июня 2011

Если все, что вы хотите сделать - это извлечь одну таблицу в память, вы можете сделать это с помощью одного оператора SELECT. Вы можете создать коллекцию, например, Map из ResultSet. После этого получите необходимую информацию с карты.

1 голос
/ 03 июня 2011

Вы также можете использовать один из продуктов кэширования, таких как Ehcache, Memcache, Coherence и многие другие.У меня есть некоторые знания в использовании Ehache.Сконфигурируйте Hibernate для кэширования конкретного запроса или объекта сущности или POJO.Все последующие поиски с теми же критериями будут выбраны из кэша.

Я полагаю, что аналогичные функции предоставляются и другими продуктами.

1 голос
/ 03 июня 2011

Вы можете заполнить любую из нескольких баз данных Java, которые имеют режим в памяти, например HSQLDB , Derby или H2 .Вы также можете взглянуть на SQLite , который не является конкретно Java, но имеет различные Java-коннекторы, как описано в в этом разделе вопросов и ответов здесь, в StackOverflow .

Но вы этого не делаетеПри необходимости подключаться к БД каждый раз, когда вам нужно выполнить запрос, вы можете использовать пул соединений для управления набором соединений, которые вы можете использовать повторно.Поскольку обычно основной задержкой является установление соединения, это может привести к значительным накладным расходам на запрос.

0 голосов
/ 03 июня 2011

Ваше предложение "Мне не нужно будет изменять его, пока оно в памяти".не отражает заголовок вашего вопроса, когда вы, очевидно, хотите изменить коммит обратно ваши данные после его использования.

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

...