Dziedzina (baza danych)
Oryginalni autorzy | Alexandra Stigsena i Bjarne Christiansena |
---|---|
Deweloper (y) | MongoDB Inc. |
Pierwsze wydanie | styczeń 2017 |
Magazyn | |
Napisane w | C++ |
Typ | Baza obiektów |
Licencja | Licencja Apache 2.0 |
Strona internetowa |
Realm to system zarządzania obiektową bazą danych o otwartym kodzie źródłowym , początkowo przeznaczony dla mobilnych systemów operacyjnych ( Android / iOS ), ale dostępny także dla platform takich jak Xamarin , React Native i innych, w tym aplikacji desktopowych ( Windows ). Jest licencjonowany w ramach licencji Apache .
We wrześniu 2016 roku ogłoszono platformę mobilną Realm, a w styczniu 2017 ukazała się pierwsza stabilna wersja platformy. Umożliwia ona dwukierunkową synchronizację pomiędzy serwerem obiektów Realm a bazami danych po stronie klienta, należącymi do danego zalogowanego użytkownika . Wydano zarówno wersję deweloperską, jak i komercyjną, wraz z licencją biznesową na integrację z innymi systemami zarządzania bazami danych, takimi jak PostgreSQL .
Wiosną 2019 MongoDB nabyło Realm za 39 mln USD.
Historia
Rozwój Realm rozpoczął się pod koniec 2010 roku przez Alexandra Stigsena wraz z Bjarne Christiansenem pod nazwą TightDB. Firma rozpoczęła działalność w 2011 roku w Y Combinator . Był promowany jako NoSQL z konfigurowalną trwałością i możliwością współdzielenia tych samych grup danych w wielu procesach, ale także wielu urządzeniach i klastrach.
TightDB zmienił nazwę swojego produktu na Realm we wrześniu 2014 roku i udostępnił go do publicznych testów. W marcu 2015 roku ujawniono finansowanie w wysokości około 20 milionów dolarów.
Wzmianki o Realmie pojawiły się w niektórych prasie branżowej , w tym w publikacjach innych firm, takich jak IBM .
Firma Realm ogłosiła wersję 1.0 w czerwcu 2016 r. i udostępniła platformę do dwukierunkowej synchronizacji w czasie rzeczywistym (beta we wrześniu 2016 r., wydanie w styczniu 2017 r.) oraz udostępniła pakiet SDK Node.js dla aplikacji po stronie serwera.
W maju 2017 roku ogłoszono wsparcie UWP .
Cechy
Najbardziej godne uwagi funkcje Realm są następujące:
- Ponieważ Realm jest magazynem obiektów, jego interfejsy API specyficzne dla języka mapują wpisane obiekty bezpośrednio do pliku Realm – dlatego klasy są używane jako definicja schematu.
- Relacje między obiektami są dozwolone poprzez „łącza”. Każde „link” tworzy „link zwrotny” jako odwrotną relację do obiektów, które łączą się z bieżącym obiektem.
- Wyniki zapytania zwrócone przez Realm to lokalne widoki wątków bieżącej „wersji bazy danych” (ponieważ Realm obsługuje współbieżność z architekturą MVCC ), a widoki te „automatycznie aktualizują się”, gdy transakcja jest zatwierdzana z dowolnego wątku , o ile Realm jest w stanie zaktualizować wersję instancji (co jest możliwe w wątkach, które mogą odbierać powiadomienia o zmianach). Gdy tak się stanie, Realm wywołuje detektory zmiany, które są dodawane do wyników zapytania (jeśli uległy zmianie).
- Każdy widok lokalny wątku zwraca obiekty proxy, które tylko odczytują/zapisują bazę danych po wywołaniu metody dostępu, co oznacza, że cały dostęp do bazy danych jest ładowany z opóźnieniem. Zapisy są dozwolone tylko podczas transakcji zapisu.
- Ponieważ każdy wynik zapytania i każdy obiekt proxy jest widokiem na dane bazowe, wszelkie zmiany wprowadzone w bazie danych są odzwierciedlane we wszystkich obiektach wskazujących te same dane. Firma Realm ogólnie nazywa to zachowanie „architekturą zerowej kopii” (wraz z wcześniej wspomnianym leniwym ładowaniem dostępu do danych).
Obsługa języków programowania
- Cel C
- Szybki
- Java ( tylko Android )
- Kotlin ( tylko na Androida )
- C# ( Xamarin , Win32, UWP )
- JavaScript ( Node.js , React Native )