Giper Baza to osobny, opcjonalny projekt — nie jest wbudowaną częścią $mol. Jego autorzy opisują go jako zdecentralizowaną, wysokodostępną bazę danych z bezkonfliktową synchronizacją w czasie rzeczywistym: magazyn CRDT, który utrwala się lokalnie i replikuje między klientami bez centralnego serwera, z podpisami cyfrowymi i szyfrowaniem end-to-end. Do zbudowania aplikacji $mol nigdy go nie potrzebujesz; sięgaj po niego tylko wtedy, gdy wielu klientów lub urządzeń musi współdzielić te same dane na żywo.Chcesz tylko, aby aplikacja działała dalej bez sieci? To zwykły tryb offline, a $mol obsługuje go za pomocą service workera — zobacz Offline. Giper Baza idzie o krok dalej: synchronizuje dane między klientami, zamiast buforować zasoby jednego klienta.Gdy faktycznie modelujesz nim dane, encje wyglądają jak zwykłe właściwości reaktywne, a replikacja po prostu się dzieje.Ta strona przedstawia kształt API. Giper Baza to obszerny temat — potraktuj to jako mapę, a nie całe terytorium.
Encja to czysty schemat — zestaw typowanych pól. Trzymaj zachowanie z dala; odczyt i zapis rób w swoich widokach.1namespace ${2export class $my_taskextends$giper_baza_entity.with({3Title:$giper_baza_atom_text,4Done:$giper_baza_atom_bool,5CreatedAt:$giper_baza_atom_time,6}){}7}Każde pole to atom — zsynchronizowana komórka z typowaną wartością.
Pobierz magazyn, sięgnij do listy encji i mapuj po nich reaktywnie:1@ $mol_mem2tasks(){3return this.tasks_list().remote_list()4}56@ $mol_mem_key7task_done(id:string,next?:boolean){8const task=this.task(id)9if(next!==undefined)task.Done(null)!.val(next)10return task.Done()?.val()??false11}Odczyt Done()?.val() daje bieżącą wartość; zapis Done(null)!.val(next) ją ustawia. Każdy widok czytający atom renderuje się ponownie, gdy on — lub zdalny peer — go zmieni.