Dziedzina (baza danych)

Królestwo
Oryginalni autorzy Alexandra Stigsena i Bjarne Christiansena
Deweloper (y) MongoDB Inc.
Pierwsze wydanie styczeń 2017 ; 6 lat temu ( 2017-01 )
Magazyn github.com/realm _ _
Napisane w C++
Typ Baza obiektów
Licencja Licencja Apache 2.0
Strona internetowa kraina .io

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

Linki zewnętrzne