2010-12-29 7 views
6

Kilka razy chciałem struktury danych, która jest podobna do tabeli SQL , gdzie można wybrać na różnych polach i wielu polach. Podobne do implementacji SQL w pamięci z wyjątkiem tego, że nie chcę przechowywać tak wielu obiektów w strukturze danych.Java w pamięci Tabela SQL jak struktura danych

Wymagam również, aby obiekt można było serializować za pomocą standardowych środków Java.

Zrobiłem to wcześniej z wieloma tabelami hash lub niestandardowymi hash keys, ale okazało się, że jest dużo kodu i bardzo specyficzny problem.

Używam również Groovy z jego zdolnością zamykania i gpath do pomocy, ale nie zawsze mam go do dyspozycji (różne projekty).

EDIT: Myślę, że mój problem jest bardziej problemem obiekt przejścia/selekcji Oto kilka interesujących projektów:

Jednak wadą większości tych projektów jest to, że są one znacznie wolniej niż dostęp do obiektów bezpośrednio (bez odbicia getter/setter) i zdecydowanie wolniej niż indeks (hash).

+0

Czy zamierzasz przesłać zapytanie o autonomiczną migawkę danych? A co z wielowątkowością, blokowaniem, transakcjami, wstawkami/aktualizacjami? Jeśli którykolwiek z powyższych możliwych - w 100% zgadzam się z @Alex. – Osw

+0

@Osw Nie, to tylko dla wygody. Nie potrzebuję natury ACID RDBMS. Potrzebuję zdolności zapytania. –

+0

Myślę, że te linki mogą być pomocne: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html i http://almaer.com/blog/hibernate-3-testing- with-in-memory-pluggable-persistence – Osw

Odpowiedz

3

JavaDB i HSQLDB, między innymi, mają w pełni wbudowane bazy danych.

+0

Problem z tymi facetami polega na tym, że nie dają mi struktur danych, które mogę uporządkować/serializować. Szukam czegoś, co mogę XStream. –

+0

Chociaż przypuszczam, że mógłbym stworzyć jakiś rodzajowy obiekt danych, który reprezentowałby tabelę, a przy niemożności zostałby załadowany do pojedynczej pamięci rdbms w pamięci, ale ma to problem z bezpieczeństwem wątków, jeśli nie jest bezpieczny dla wątków i ma wiele blokujących wątków, jeśli jest. –

+0

Wątpię, czy znajdziesz coś, co spełnia oba wymagania. Moja sugestia: użyj POJO z serializacją, aby zrobić migawkę tabel w bazie danych w pamięci, a następnie serializować to. Przejście w drugą stronę również byłoby banalne, wystarczy odrzucić XStream do POJO, a następnie załadować dane do bazy danych w pamięci. – RobertB

2

Co dotyczy korzystania z pamięci SQL w pamięci do tych celów? Zaoszczędzisz mnóstwo czasu na rozwój; Wydatki na wydajność są naprawdę niewielkie. Ryzykujesz znacznie więcej, próbując wdrożyć to samodzielnie.

+2

To brzmi jak (w każdym razie) szukał alternatywy dla budowania własnego. Tak naprawdę nie jest to odpowiedź i może być lepsza jako komentarz do pierwotnego pytania. – RobertB

+0

Nie chcę budować własnego (stąd Q). Nie mogę po prostu użyć bazy danych w pamięci, tabele nie są serializującymi strukturami danych. Innymi słowy, nie mogę wysłać całej tabeli db przez przewód JAXB (wpisz tutaj twoją ulubioną technologię serializacji) lub zapisz ją do pliku. –

Powiązane problemy