What is realm database?

Realm: Den Open Source Database til Mobilapps

01/10/2025

Rating: 4.1 (7424 votes)

Dyk ned i verdenen af Realm, en banebrydende database, der har revolutioneret, hvordan udviklere håndterer data i mobile applikationer. Oprindeligt designet som et lynhurtigt og brugervenligt alternativ til traditionelle databasesystemer på mobile platforme som Android og iOS, har Realm udviklet sig betydeligt gennem årene. Denne artikel vil udforske Realms historie, dens kernefunktioner som en open source objektorienteret database, dens integration med MongoDB og den seneste udvikling, herunder udfasningen af dens synkroniseringstjeneste.

What is realm by MongoDB?
Made with contrib.rocks. Realm by MongoDB is an offline-first mobile database: an alternative to SQLite and key-value stores. Latest version: 12.14.2, last published: 3 months ago. Start using realm in your project by running `npm i realm`. There are 134 other projects in the npm registry using realm.
Indholdsfortegnelse

Hvad er Realm? En Objektorienteret Tilgang til Mobil Data

I sin kerne er Realm en objektorienteret databasestyringssystem, der adskiller sig markant fra traditionelle relationelle databaser som SQLite. I stedet for at arbejde med tabeller og rækker, manipulerer udviklere direkte med objekter, hvilket fjerner behovet for komplekse Object-Relational Mappers (ORM'er), der ofte introducerer ydeevneproblemer og øger vedligeholdelsesbyrden. Denne direkte tilgang til data gør udviklingen hurtigere og mere intuitiv.

Realm blev bygget fra bunden med et "mobil-først" mindset. Det betyder, at den er optimeret til at køre direkte på enheder som smartphones, tablets og wearables. Denne arkitektur sikrer enestående hastighed og effektivitet, selv i offline-scenarier, hvilket er afgørende for moderne mobilapplikationer. Den understøtter funktioner som relationer mellem objekter, generiske typer og vektorisering, hvilket gør den til en moderne og kraftfuld løsning for datalagring på enheden.

Realm som Open Source Projekt

En af Realms mest fremtrædende egenskaber er dens open source natur. Licenseret under Apache License, har Realm altid været engageret i at give tilbage til udviklerfællesskabet. Denne filosofi har fostret et levende økosystem og har bidraget til Realms udbredelse. Med over 2 milliarder installationer og mere end 100.000 aktive udviklere vidner Realm om sin succes og accept i branchen.

Missionen med at hjælpe udviklere med at bygge bedre apps hurtigere er central for Realm. Ved at frigive værktøjer som open source har Realm gjort det muligt for et bredt publikum at drage fordel af dens innovationer, samtidig med at fællesskabet bidrager til dens fortsatte forbedring og udvikling.

Rejsen fra Uafhængig til MongoDB's Økosystem

Realm startede sin rejse primært fokuseret på mobile operativsystemer som Android og iOS, men udvidede hurtigt sin rækkevidde til at omfatte andre platforme som Xamarin, React Native og endda desktop-applikationer på Windows. Denne brede kompatibilitet gjorde Realm til en alsidig løsning for cross-platform udvikling.

I september 2016 annoncerede Realm deres "Realm Mobile Platform", som i januar 2017 så sin første stabile udgivelse. Denne platform introducerede tovejs synkronisering mellem Realm Object Server og de klientbaserede databaser, hvilket muliggjorde realtidsdataflow mellem enheder og backend. Der blev lanceret både en udvikler- og en kommerciel udgave, samt en forretningslicens for integration med andre databasestyringssystemer som PostgreSQL.

Is realm open source?
Realm is an open source object database management system, initially for mobile operating systems (Android / iOS) but also available for platforms such as Xamarin, React Native, and others, including desktop applications (Windows ). It is licensed under the Apache License.

Et vigtigt vendepunkt i Realms historie indtraf i foråret 2019, da MongoDB opkøbte Realm for 39 millioner USD. Dette opkøb signalerede en strategisk bevægelse fra MongoDB for at styrke deres position inden for mobil- og edgedata, og Realm blev en integreret del af deres portefølje.

Realm under MongoDB: Atlas Device SDK'er og Fremtiden

Efter opkøbet af MongoDB har Realm gennemgået yderligere transformationer. I september 2023 blev Realm-databasen rebrandet til "Atlas Device SDK'er". Disse SDK'er repræsenterer en samling af sprog- og platformspecifikke udviklingskits, optimeret til dataadgang og persistens på mobile og edge-enheder. Realm-databasen kan betragtes som persistenslaget i Atlas Device SDK'erne, hvilket giver udviklere værktøjer til at bygge datadrevne apps til mobil, edge, web, desktop og IoT.

Den mest markante ændring kom dog i september 2024, da MongoDB annoncerede udfasningen af Atlas Device Sync-tjenesten, som hidtil havde synkroniseret Realm med MongoDB Atlas. Selvom den proprietære synkroniseringstjeneste vil blive afviklet, forbliver Realm-databasen tilgængelig som open source. Det er dog vigtigt at bemærke, at databasen ikke længere vil blive vedligeholdt af MongoDB-teamet. Som et svar på dette har MongoDB i oktober 2024 annonceret flere alternative synkroniseringstjenester, som udviklere kan overveje, herunder Ditto, ObjectBox og Powersync.

Denne udvikling understreger Realms vedvarende forpligtelse til at være en open source database, selvom dens synkroniseringskapaciteter nu kræver tredjepartsløsninger eller selvimplementering.

Nøglefunktioner i Atlas Device SDK'erne (tidligere Realm)

  • Mobil-først: Realm er den første database bygget fra grunden til at køre direkte inde i telefoner, tablets og wearables, hvilket sikrer optimal ydeevne på mobile enheder.
  • Enkelhed: Data eksponeres direkte som objekter og kan forespørges via kode, hvilket eliminerer behovet for ORM'er, der ofte er fyldt med ydeevne- og vedligeholdelsesproblemer. Denne direkte adgang forenkler udviklingsprocessen markant.
  • Moderne: Databasen understøtter avancerede funktioner som relationer mellem dataobjekter, generiske datatyper og vektorisering, hvilket gør den fleksibel og kraftfuld til moderne applikationsudvikling.
  • Hastighed: Realm er kendt for sin exceptionelle hastighed. Den er hurtigere end selv rå SQLite på almindelige operationer, samtidig med at den opretholder et ekstremt rigt funktionssæt. Dette er afgørende for apps, der kræver hurtig og responsiv dataadgang.
  • Tidligere MongoDB Atlas Device Sync: Selvom denne funktion nu er udfaset, var den tidligere en central del af Realms tilbud, hvilket gjorde det nemt at holde data synkroniseret på tværs af brugere, enheder og backend i realtid. Dets fravær nu betyder, at udviklere skal overveje alternative synkroniseringsløsninger.

Kom i Gang med Realm (Atlas Device SDK'er)

For at komme i gang med at bruge Realm som en del af Atlas Device SDK'erne, skal du typisk integrere det i dit foretrukne udviklingsmiljø. Realm understøtter i øjeblikket React Native (med JSC & Hermes på iOS & Android), Node.js og Electron (på Windows, MacOS og Linux). Det er vigtigt at bemærke, at Node.js version 18 eller nyere er påkrævet for Node.js-integration, og der findes en kompatibilitetsmatrix for React Native-brugere.

TypeScript Modeller

Realm tilbyder robust understøttelse af TypeScript, et populært alternativ til ren JavaScript, der tilføjer statisk typning. Denne understøttelse består af præcise TypeScript-definitioner og @realm/babel-plugin til at transformere TypeScript-klasser til Realm-skemaer. Her er et eksempel på en modelklasse:

class Task extends Realm.Object<Task, "description"> { _id = new Realm.BSON.ObjectId(); description!: string; @index isComplete = false; static primaryKey = "_id"; constructor(realm, description: string) { super(realm, { description }); } } 

Denne tilgang forenkler datamodellering og reducerer fejl, da typings giver bedre autokomplettering og validering under udvikling.

What does realm do?
At Realm, our mission is to help developers build better apps faster. We provide a unique set of tools and platform technologies designed to make it easy for developers to build apps. We could not have done this without the help of the open source community and it is our mission to give back!

Integration med React Native

For React Native-udviklere tilbyder Atlas Device SDK til React Native persistens af objekter og avancerede forespørgsler for persistente objekter. Integrationen kan gøres endnu lettere ved at bruge @realm/react, som leverer React hooks, der strømliner arbejdet med Realm i en React Native-applikation.

Der findes også TypeScript-skabeloner til at hjælpe dig med at komme hurtigt i gang med Realm. Disse skabeloner giver et godt udgangspunkt for nye projekter og demonstrerer bedste praksis for integration.

Fejlfinding og Kompatibilitet

Selvom Realm er designet til at være robust, kan der opstå problemer under installation eller kørsel. En almindelig fejl er "Could not find the Realm binary". Dette kan skyldes manglende opdatering af pod-afhængigheder på iOS, cache-fejl eller manglende Realm-binarier i de korrekte mapper.

For iOS kan npx pod-install ofte løse problemet. Hvis ikke, kan rydning af caches (rm -rf ios/Pods, rm ios/Podfile.lock, rm -rf ~/Library/Developer/Xcode/DerivedData) og geninstallation af pods være nødvendigt. På Android kan cd android && ./gradlew clean og en genopbygning hjælpe. For Expo-brugere er det vigtigt at installere expo-dev-client og bruge udviklingsklient-specifikke scripts (npx expo run:ios, npx expo run:android, npx expo start --dev-client).

Det er altid en god idé at konsultere kompatibilitetsmatrixen for at sikre, at du kører kompatible versioner af Realm med dine versioner af Node, React Native eller Expo.

Analyse og Privatliv

Realm indsamler anonymiseret installationsinformation asynkront. Dette gøres for at hjælpe udviklerne med at forbedre produktet og prioritere nye funktioner. De indsamlede data inkluderer Realm-version, OS-platform og version, brug af JavaScript-frameworks (som React Native, Electron) og deres versioner, JavaScript-motor, Node.js-version, TypeScript-version (hvis brugt), en anonym maskinidentifikator og et hash af applikationsnavnet. Ingen af disse data identificerer dig personligt, din arbejdsgiver eller din app.

Is realm open source?
Realm is an open source object database management system, initially for mobile operating systems (Android / iOS) but also available for platforms such as Xamarin, React Native, and others, including desktop applications (Windows ). It is licensed under the Apache License.

Hvis du absolut ikke ønsker at sende disse data tilbage til Realm, kan du indstille miljøvariablen REALM_DISABLE_ANALYTICS. Realm understreger, at dataindsamlingen er nødvendig for at aggregere brugsdata nøjagtigt og deduplicere information for at undgå misvisende statistikker.

Fællesskab og Support

Realm har et aktivt fællesskab, hvor udviklere kan søge hjælp og bidrage. Hvis du har spørgsmål til din kode, kan du søge efter tidligere spørgsmål under #realm-tagget eller stille et nyt spørgsmål på Realms Community Forum. For fejlrapporter opfordres udviklere til at åbne et issue på GitHub og inkludere så meget information som muligt (Realm-version, fuld log, Realm-fil, projekt der viser problemet). Funktionsanmodninger kan også indsendes via issues, hvor du beskriver funktionen og dens formål.

Projektet følger MongoDB's Code of Conduct, og uacceptabel adfærd kan rapporteres. Realm JS og Realm Core er udgivet under Apache License 2.0. Hvis du er tilfreds med Realm, opfordres du til at dele dine tanker på Twitter ved at nævne @realm. Hvis du derimod har forbedringsforslag, opfordres du til at give feedback, så teamet kan rette op på det.

Realm vs. Traditionelle Mobile Databaser

For at give et klarere billede af Realms position i mobil database-landskabet, lad os sammenligne den med en traditionel SQL-baseret løsning som SQLite:

FunktionRealm (Atlas Device SDK'er)SQLite
DatamodelObjektorienteret (direkte objektmanipulation)Relationel (tabeller, rækker, SQL-forespørgsler)
YdeevneMeget hurtig, optimeret til mobile enhederGod, men ofte langsommere end Realm på almindelige operationer
Adgang til dataDirekte som objekter, ingen ORM nødvendigVia SQL-forespørgsler, kræver ofte ORM for objekt-mapping
KompleksitetEnklere for objektorienteret udviklingKan kræve mere boilerplate-kode og SQL-viden
SynkroniseringKræver nu tredjeparts- eller selvimplementerede løsninger (tidligere indbygget)Kræver altid manuel synkroniseringslogik eller tredjepartsløsninger
Offline-understøttelseIndbygget og robustGod, men kræver manuel håndtering af konflikter
VedligeholdelseGenerelt lavere pga. objektmodelKan være højere med komplekse skemaer og ORM'er

Som tabellen viser, tilbyder Realm en mere moderne og strømlinet tilgang til mobil datalagring, især for udviklere, der foretrækker en objektorienteret paradigme. Selvom synkroniseringsaspektet har ændret sig, forbliver Realms kernedatabase en yderst kompetent løsning.

Ofte Stillede Spørgsmål (FAQ)

Er Realm stadig open source?
Ja, Realm-databasen er fortsat open source under Apache License 2.0. Selvom MongoDB har udfaset sin proprietære Atlas Device Sync-tjeneste, forbliver kernedatabasen tilgængelig for alle.
Bliver Realm stadig vedligeholdt af MongoDB?
Nej, efter udfasningen af Atlas Device Sync i september 2024 har MongoDB annonceret, at Realm-databasen ikke længere vil blive vedligeholdt af deres team. Fællesskabet kan dog fortsat bidrage og bruge den som open source.
Hvad er Atlas Device SDK'er?
Atlas Device SDK'er er MongoDB's samling af sprog- og platformspecifikke SDK'er, der er optimeret til dataadgang og persistens på mobile, edge, web, desktop og IoT-enheder. Realm-databasen fungerer som persistenslaget inden for disse SDK'er.
Kan jeg stadig bruge Realm til nye projekter?
Absolut. Realm-databasen er stadig en kraftfuld og hurtig løsning til lokal datalagring på enheder. Hvis dit projekt kræver synkronisering med en backend, skal du dog nu overveje tredjepartsløsninger som Ditto, ObjectBox eller Powersync, eller implementere din egen synkroniseringslogik.
Er Realm egnet til webapplikationer?
Mens Realm primært er en mobil-først database, understøtter den også Node.js og Electron, hvilket gør den anvendelig i visse web- og desktop-applikationer, især hvor der er behov for lokal datahåndtering og offline-kapacitet. Dens styrke ligger dog mest i mobiludvikling.
Hvad sker der med den eksisterende data, der er synkroniseret med Atlas Device Sync?
MongoDB har kommunikeret, at Atlas Device Sync-tjenesten vil blive afviklet. Eksisterende brugere af synkroniseringstjenesten skal migrere deres synkroniseringsbehov til alternative løsninger eller eksportere deres data før tjenesten lukkes ned. Det er vigtigt at konsultere MongoDB's officielle annonceringer for specifikke tidslinjer og migrationsvejledninger.

Konklusionen er, at Realm fortsat er en yderst relevant og kraftfuld database for udviklere, der søger en hurtig og objektorienteret løsning til datalagring på enheder. Selvom landskabet for synkronisering har ændret sig, understreger Realms vedvarende open source-status og dens integration som en del af Atlas Device SDK'erne dens værdi i det moderne app-udviklingsøkosystem.

Hvis du vil læse andre artikler, der ligner Realm: Den Open Source Database til Mobilapps, kan du besøge kategorien Mobil.

Go up