2012-02-14 16 views
12

Pracuję nad projektem od ponad pół roku, budując oprogramowanie opieki zdrowotnej od podstaw. Kiedy się dołączyłem, MySQL został wybrany jako podstawowy magazyn danych.Udane implementacje VoltDB

Kilka miesięcy i wiele bóle głowy później, zaczęliśmy badać alternatywne sklepy danych, które mogą zaoferować elastyczność potrzebną do rejestrowania naszych krytycznych i stale zmieniających się danych dotyczących opieki zdrowotnej.

Przyjrzeliśmy się wielu rozwiązaniom NoSQL; MongoDB czerpiąc najwięcej z naszej uwagi. Możliwość przechowywania uporządkowanych, osadzonych danych byłaby ogromną korzyścią. Jednak obawialiśmy się raportów o utracie danych/niezawodności.

Natknąłem się na kilka magazynów danych "NewSQL" i jestem zainteresowany VoltDB w szczególności.

Jestem ciekawy, czy ktoś ma jakiekolwiek doświadczenie z Voltem, czy też widział go w projekcie.

Edit:

integralność danych i konsystencja są najważniejsze. Może to być bardzo szkodliwe dla informacji o pacjentach, które mogą zostać utracone, mogą otrzymać niewłaściwą terapię itp.

Objętość danych będzie się różnić; Najpierw prawdopodobnie poprzemy małe praktyki. Coś jak 700 użytkowników łącznie. Ale nawet kiedy zwiększamy skalę do szpitali, nie patrzymy na media społecznościowe, takie jak ruch drogowy.

Jeśli chodzi o twoje pytanie, tak struktury danych będą ewoluować. Oprócz konieczności zmiany istniejącej struktury w celu wychwycenia nowych lub zmodyfikowanych danych wejściowych, musimy zachować strukturę istniejących danych jako swego rodzaju snap-shot. Ten styl EAV udało się nam tylko z MySQL.

Dziękujemy za opinię.

+0

Dlaczego znacznik mongodb? –

+0

Cóż, wiesz, MySQL to najmniej niezawodna baza danych SQL .. po może SQLite .. I nawet bazy danych Oracle wysadzić. Więc .. –

+0

Badanie Mongo jako alternatywy doprowadziło mnie do VoltDB i pomyślał, że być może ci w podobnej sytuacji mogą znaleźć dyskusję z udziałem obu, aby być użytecznym – jthurau

Odpowiedz

32

W zeszłym roku wybraliśmy aplikację, która korzysta z VoltDB. Przechowujemy około 1,5 miliarda rekordów i przetwarzamy 50-90 milionów transakcji dziennie z kfactor = 1 4 klastrem serwerów (256 GB pamięci/serwera). Biorąc pod uwagę wydajność VoltDB, z łatwością moglibyśmy przekazać 1 miliard transakcji dziennie.

Do tej pory nie mieliśmy żadnych problemów związanych z oprogramowaniem VoltDB. Nasze doświadczenie jest zgodne z ACID. Dodając funkcję rejestrowania poleceń, uważam, że możesz skonfigurować parametry rejestrowania, aby wykluczyć utratę jakichkolwiek transakcji.

Do innych silnych funkcji należy skalowalność (i względna prostota dodawania pojemności).

Ważnym czynnikiem przy wyborze VoltDB jest zrozumienie schematu partycjonowania VoltDB. Uzyskanie bardzo wysokich szybkości transakcji z VoltDB zależy od równoległości osiągniętej dzięki partycjonowaniu danych. Partycjonowanie jest niewidoczne dla twojej aplikacji, ale dane twojej aplikacji muszą być podzielone na partycje, aby uzyskać maksymalną wydajność. Jeśli twoje dane nie nadają się do partycjonowania, uważam, że podstawowym skutkiem byłaby mniejsza przepustowość (tj. Stawki transakcji) - a nie ogranicznik.

Wreszcie - uwaga dotycząca procedur przechowywanych. VoltDB pozwala na zastąpienie procedur przechowywanych bez zatrzymywania bazy danych. Ponadto każde wywołanie procedury składowanej stanowi pojedynczą transakcję. Zastosowaliśmy procedurę przechowywaną w taki sposób, że jesteśmy w stanie zmodyfikować/zaktualizować naszą logikę aplikacji bez zatrzymywania bazy danych.

+1

StevieE - czy możesz porozmawiać z tobą o swoim doświadczeniu VoltDB w bardziej szczegółach? – Daniil

0

Pytanie w obecnym brzmieniu jest bardzo subiektywne, ale więcej informacji może pomóc nam wskazać właściwy kierunek.

Jakie są dokładnie Twoje wymagania? Czy ten system ma potrzeby transakcyjne, gdy integralność i spójność danych ma ogromne znaczenie, na przykład w aplikacjach handlowych i finansowych? Jaka jest objętość danych i ilu współbieżnych użytkowników? Jakie są wymagania dotyczące wydajności?

Wspomniałeś także o ever-changing healthcare data, czy to oznacza, że ​​struktury danych ciągle się zmieniają i ewoluują? Jeśli tak, możesz chcieć trzymać się z daleka od relacyjnych baz danych, biorąc pod uwagę naturę sztywnych schematów, a zamiast tego rozważ magazyny dokumentów, takie jak Mongo, gdzie struktury danych bez użycia schematu zapewniają większą elastyczność.

BTW,

Nie wystraszyli się opowieści o niezawodności na Mongo; można znaleźć horrory dla praktycznie każdego produktu, zarówno open source, jak i komercyjnego; często te złe recenzje mają mniej wspólnego z produktem i mają więcej wspólnego ze słabą implementacją klienta.

VoltDB, ostatnio sprawdziłem, wymaga, aby cała logika trwałości była zakodowana jako procedura przechowywana. Oczywistymi wadami tego podejścia są mniejsza widoczność kodu i modułowość oraz większe potrzeby w zakresie konserwacji. Poza tym Voltdb jest bardzo szybki, ponieważ większość napięć występujących w tradycyjnych relacyjnych bazach danych, takich jak blokowanie itp., Jest eliminowana z silnika bazy danych.

+0

Proszę wyjaśnić, co masz na myśli przez procedury przechowywane powodujące większe potrzeby konserwacyjne. – Kuberchaun

+1

Z mojego doświadczenia wynika, że ​​SP powoduje problemy z utrzymaniem, ponieważ oddziałują na tabele, a ogólnie na RDBMS, bezpośrednio; zmienić tabelę, a SP również ulegnie zmianie. Wolę używać podejścia do usług danych/warstwy abstrakcji podczas interakcji z danymi; nie jest dobrym pomysłem implementowanie logiki trwałości specyficznej dla typu magazynu danych. Oto krótka historia: korzystaliśmy z Sybase przez 10 lat, wdrożyliśmy w niej ponad 1000 przechowywanych proc, ale kiedy Sybase zmieniło swoją strukturę licencjonowania, musieliśmy przeprowadzić migrację do Oracle.Sama przechowywana konwersja proc trwała 2 1/2 roku i kosztowała nas miliony. – raffian

0

Pytanie jest trochę stary, ale dają pewne informacje zwrotne ponieważ używaliśmy MongoDB od dłuższego czasu, i szukamy do VoltDB ale dla zupełnie różnych powodów:

  • chodzi MongoDB : używamy mongoDB w produkcji od 4 lat i nigdy nie straciliśmy ani jednego bajtu danych. "Mongodb nie jest wiarygodny" wydaje się być mitem, przynajmniej dla mnie. Zarządzamy milionami nowych wpisów w mongoDB każdego dnia bez żadnych problemów.

  • Szukamy VoltDB do innego zastosowania: dostarczania analiz w czasie rzeczywistym na ogromnym wolumenie. MongoDB nie jest zły w dostarczaniu analiz, ale kiedy przekroczysz liczbę milionów wpisów do analizy, zaczyna być nieco powolny. VoltDB jest o wiele lepszy, ale nie radziłbym ci używać go do przechowywania danych, szczególnie danych o dużej wartości ... Używamy innej bazy danych do przechowywania danych.

+0

VoltDB powinien być w stanie obsłużyć miliony na pewno. Należy jednak pamiętać, że punktem sprzedaży voltDB nie są duże dane, ale szybkie dane. Oni robią naprawdę dobrze. To zależy od wymagań. Ale dla dużych danych voltDB - może nie być najlepszym dostępnym rozwiązaniem. –

+0

Zastanawiam się, jak daleko można go popchnąć VoltDB. Istnieje kilka rozwiązań OLAP (podobnych), które będą inteligentnie agregować i indeksować dane. Pinot Linkedin wygląda interesująco ... Niepewność VoltDB rozwiązuje wiele problemów. Jednak dostarczanie metryk z ogromnych zestawów danych może nie być jednym z nich :-) –

+0

Zgadzam się, że nie jest złym pomysłem połączenie bazy danych takiej jak mongoDB z punktu widzenia trwałości. Ale moim zdaniem VoltDB jest lepszy w poprawnym przetwarzaniu zapisów pod wysoką współbieżnością (według projektu). Technicznie, ale także sposób pracy programistów z obydwoma bazami danych. VoltDB oddziela transakcje i uruchamia je (wymyślnie i-) znacznie bliżej danych niż ma to miejsce w przypadku aplikacji Mongo. Błędy można popełnić w obu przypadkach. Czuję, że aplikacje mongo często mają więcej obowiązków, jeśli chodzi o obsługę współbieżności itp., Dlatego uważam je za bardziej podatne na błędy ludzkie. –

Powiązane problemy