2010-09-21 12 views
11

Obecnie używam DB2 do testowania jednostek, ale jest ona dość powolna. Potrzebowałbym dobrej bazy danych w pamięci, która zawierałaby całą funkcję DB2. Czy istnieje ten typ bazy danych w pamięci, czy też umożliwiają one tylko standardową funkcję SQL?Czy istnieje dobra baza danych w pamięci, która działałaby jak DB2

Dziękuję.

EDIT DB2 Database jest na zdalnym serwerze, więc będę potrzebował rozwiązania do replikacji schematu tej bazy danych w lokalnej bazie danych w pamięci w celu przyspieszenia badań.

+0

Każda baza danych jest inna. Żadna baza danych - inna niż DB2 - nie będzie mieć wszystkich funkcji DB2. Nie możesz mieć "całej funkcji DB2" bez używania DB2. Jakie ** dokładne ** funkcje potrzebujesz? –

+0

Istnieje wiele aplikacji, które go używają, i dokumentowanie wszystkich zapytań SQL w tych aplikacjach byłoby prawie niemożliwe. – Drahakar

+0

jeśli nie wiesz, jakie funkcje potrzebujesz, to nie możesz tego zastąpić, prawda? Jeśli nie znasz wszystkich funkcji, nie można użyć żadnej bazy danych poza DB2. –

Odpowiedz

12

Potrzebowałbym dobrej bazy danych w pamięci, która zawierałaby całą funkcję DB2.

Derby (ex Cloudscape) jest zgodne z językiem DB2. I ma tryb pamięci.

Być może warto też spojrzeć na H2 (z DB2 compatibility mode). Ale nawet jeśli H2 byłby szybszy, rozważałbym Derby w twoim przypadku.

+0

Derby nigdy nie obsługuje instrukcji zapisanej procedury, więc nie jest ona zgodna z DB2. – Kishore

1

Dlaczego nie używać tmpfs (Unix) lub jakiegokolwiek tradycyjnego rozwiązania RAMdrive dla systemu Windows? Lub można uzyskać szybki dysk SSD.

+0

Baza danych znajduje się na serwerze zdalnym. Więc jeśli nie zainstaluję serwera DB2 na mojej stacji roboczej, nie będzie to opcja. – Drahakar

0

Jeśli wielkość puli buforów będzie wystarczająco duża, baza danych DB2 również będzie przechowywana w pamięci.

1

Jak wspomina Pascal, Derby jest prawie identyczne pod względem składniowym do DB2. Po wypróbowaniu tego przez jakiś czas mieliśmy problem z nie obsługującymi sekwencjami Derby, ale protokoły połączeń są identyczne. Np. Można użyć sterownika DB2 JDBC do połączenia z bazą danych Derby.

Jeśli twoja aplikacja streści połączenie z bazą danych, powiedzmy Hibernate lub NHibernate (jeśli .Net) używając H2 lub HSQLDB, może również pracować dla testów jednostkowych, zakładając, że nie polegasz na procedurach przechowywanych i tym podobnych.

Innym narzędziem ułatwiającym migrację schematu, która jest kierowana do wielu baz danych, jest http://liquibase.org. W przypadku kompilacji testowej tworzysz bazę danych w pamięci, a w przypadku wdrożenia tworzysz bazę danych DB2 lub generujesz skrypt migracji. Będzie budował bazę danych z poprawnym schematem i oferuje warunkowe migracje (np. Grant nie jest dostępny w HSQL, więc uruchamiasz zestaw zmian tylko dla DB2).

4

Myślę, że najłatwiejszym rozwiązaniem byłoby --- DB2.

Pobierz bezpłatną wersję ekspresową i zainstaluj ją na swoim komputerze. Powolna szybkość prawie na pewno sprowadza się do wąskich gardeł sieci i ograniczeń przy użyciu klienta DB2, instalacja lokalna wyeliminowałaby je.

Kolejną najlepszą rzeczą będzie JavaDB (znana jako Derby!). Który jest podobny, ale nie do końca identyczny z DB2.

Użycie jakiejkolwiek innej bazy danych spowoduje zrzucenie użytkownika w gąszczu nieobsługiwanych funkcji, niezgodnego SQL, różnych nazw dla tej samej funkcji, różnych funkcji o tej samej nazwie funkcji etc.etc.

0

Dwiema możliwymi bazami danych w pamięci są: - timesTen od Oracle. - SolidDB firmy IBM.Ten może wysłać transakcję z powrotem do bazy danych DB2, ale pytania będą miały bardzo wysoką wydajność

Aby uzyskać więcej informacji na temat solidDB http://www-01.ibm.com/software/data/soliddb/