Концепция базы данных в памяти и как посмотреть, заполняются ли мои данные в базе данных HSQL? - PullRequest
3 голосов
/ 14 августа 2011

Я использую HSQL в базе данных памяти для целей тестирования моего приложения и использую SQL Server в качестве основной базы данных, теперь, когда я делаю тест, база данных HSQL заполняется теми же данными, что и в моем SQL Server, сейчас я пытаюсьдля тестирования определенной службы, которая извлекает данные из базы данных (она будет запрашивать MS Server, если непосредственно запущена служба, или будет запрашивать базу данных HSQL, если она вызывается из теста)

Я могу видеть данные с MS Server при запускезапрос, но HSQL Db не возвращает никаких данных, если на нем выполняется такой же запрос.Я догадываюсь, что HSQL DB не заполняется данными, есть ли способ, в котором я могу пойти и посмотреть, какие таблицы у меня есть в HSQL DB и как данные заполняются в HSQLDB, я хочу увидеть данные иУ меня нет GUI-клиента, чтобы увидеть, как заполняется база данных HSQL и какие данные идут в какую таблицу.Есть ли у нас хороший клиент для того же, и как я могу подключиться к базе данных HSQL, используя его, а также как я могу реально увидеть, что происходит под HSQL Cover, а не просто предполагать, что HSQL правильно заполнен тем, что есть в SQL Server?

Какие-либо предложения будут иметь большое значение?

Ответы [ 3 ]

10 голосов
/ 19 августа 2011

Здесь я добавляю подробные шаги

Как запустить HSQLDB только для памяти в режиме сервера?

1) Загрузить последнюю версию hsqldb-2.2.5.zip

2) распакуйте его, откройте папку bin

3) изменить файл runServer.bat следующим образом CD .. \ данные @java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server -database.0 mem: aname -dbname.0 aliasdb и нажмите runServer.bat, чтобы запустить сервер

4) запустите runManager.bat, выберите тип сервера, введите URL jdbc: hsqldb: hsql: // localhost / aliasdb, подключиться, создать тестовую таблицу и проверить данные

5) снова запустите runManager.bat, чтобы запустить другого клиента, выберите тип сервера, введите URL-адрес jdbc: hsqldb: hsql: // localhost / aliasdb, подключитесь, вы найдете созданные вами данные.

2 голосов
/ 14 августа 2011

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

Форма URL jdbc: hsqldb: hsql: // localhost используется для доступа к серверу, в то время как сам сервер использует jdbc: hsqldb: mem: test в качестве базы данных внутренней памяти. Сначала сервер должен быть запущен с помощью команды, подобной этой:

java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mem:test
0 голосов
/ 14 августа 2011

Вы можете использовать базу данных Derby In-memory и базу данных H2 in-memory.Они хороши. Но H2 имеет лучшую производительность.H2 имеет GUI веб-консоли, а Derby имеет GUI плагина Eclipse.Можешь попробовать.Я использовал их в проекте.База данных H2 имеет тег в SO, а ее автор будет поддерживать вас в SO.Я думаю, что fredit подходит для использования режима сервера вместо режима встраивания.Но его URL, кажется, не прав.По крайней мере, он должен использовать mem.Для Дерби, URL-адрес является jdbc: derby: // myhost: 1527 / memory: myDB; create = true.Это примерный URL для H2 jdbc: h2: tcp: // localhost / mem: db1.

Вам необходимо использовать режим сервера, чтобы клиент мог подключиться к нему из сети.В режиме памяти вам нужно позаботиться о том, чтобы он находился в памяти, когда ваш Java-процесс завершен, JVM отсутствует, данные в БД также теряются.Но для тестирования это становится преимуществом.Вам не нужно очищать тестовые данные.

H2 имеет очень хорошую функцию для тестирования. У него есть поддержка SQL, которая запускает SQL совместимости для IBM DB2, Apache Derby, HSQLDB, MS SQL Server, MySQL,Oracle и PostgreSQL.Это означает, что даже если вы используете специальный SQL в MS SQL Server, вы можете получить тот же результат в H2.Я полагаю, вам понравится.

ссылки

Я знаю, что HSQL работает в режиме памяти, но я им не пользовался.

Удачи.

ОБНОВЛЕНИЕ

Я полагаю, что если вы вместо этого напишите запрос в своем тестовом примере, он вернет результаты.Я сделал это много в моем тестовом примере.Даже в режиме встраивания, пока вы создаете соединение JDBC в своем тестовом примере.Если вы чувствуете, что это неудобно, вы можете даже сбросить вывод данных в файлы. Но вы должны загрузить данные в HSQL в вашем тестовом примере, вы можете использовать BeforeClass, чтобы сделать это. Если вы не можете сделать это, вы должны использовать серверmode.

Кажется, что hsql немного отличается в URL JDBC для режима памяти сервера

, подробности см. в http://hsqldb.org/doc/guide/guide.html#N108D2 Соединения

Вы должны иметь делос некоторыми настройками сервера.

@ Рэйчел, я наконец-то нашел ссылку, которая поможет вам настроить режим сервера в режиме памяти.Посмотри на это.Это немного сложно.

"Запуск HSQLDB только для памяти в режиме сервера"

NOTE

Вторая ссылка нерасскажите подробно, как правильно подключить.Так что попробуйте первый.

...