01/10/2025
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.

- Hvad er Realm? En Objektorienteret Tilgang til Mobil Data
- Realm som Open Source Projekt
- Rejsen fra Uafhængig til MongoDB's Økosystem
- Realm under MongoDB: Atlas Device SDK'er og Fremtiden
- Kom i Gang med Realm (Atlas Device SDK'er)
- Fejlfinding og Kompatibilitet
- Analyse og Privatliv
- Fællesskab og Support
- Realm vs. Traditionelle Mobile Databaser
- Ofte Stillede Spørgsmål (FAQ)
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.

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.

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.

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:
| Funktion | Realm (Atlas Device SDK'er) | SQLite |
|---|---|---|
| Datamodel | Objektorienteret (direkte objektmanipulation) | Relationel (tabeller, rækker, SQL-forespørgsler) |
| Ydeevne | Meget hurtig, optimeret til mobile enheder | God, men ofte langsommere end Realm på almindelige operationer |
| Adgang til data | Direkte som objekter, ingen ORM nødvendig | Via SQL-forespørgsler, kræver ofte ORM for objekt-mapping |
| Kompleksitet | Enklere for objektorienteret udvikling | Kan kræve mere boilerplate-kode og SQL-viden |
| Synkronisering | Kræver nu tredjeparts- eller selvimplementerede løsninger (tidligere indbygget) | Kræver altid manuel synkroniseringslogik eller tredjepartsløsninger |
| Offline-understøttelse | Indbygget og robust | God, men kræver manuel håndtering af konflikter |
| Vedligeholdelse | Generelt lavere pga. objektmodel | Kan 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.
