Realm VS Room in Android [closed]

Lesezeit: 5 Minuten

Benutzer-Avatar
Regenmacher

Ich baue eine App und muss eine Datenbank darin verwenden. Ich erwäge die Verwendung von Room, da es gerade neu und heiß ist. Aber ich habe auch viel Großartiges über Realm gehört. Kann jemand auf die möglichen Vorteile der Verwendung jedes einzelnen hinweisen?

Ich habe recherchiert und die Dokumentation gelesen, aber ich habe keine Erfahrung, um es selbst zu verstehen

Raumdokumente

Realm-Dokumente

BEARBEITEN:

Es ist einige Zeit her und ich kann auf einen weiteren Grund für die Verwendung von Room hinweisen. Obwohl Sie Realm und Transformations verwenden können, um Dinge mit LiveData zu verknüpfen, können Sie mit Room LiveData (und auch RXJava-Typen mit einem Plugin) direkt für die DB zurückgeben, was Ihnen einige Boilerplate-Codes und Kopfschmerzen erspart.

BEARBEITEN 2:

Zusätzlich zur ersten Bearbeitung bietet Room jetzt eine erstklassige Unterstützung für Coroutinen in Kotlin. Wenn Sie also vorhaben, diese zu verwenden, ist dies ein nettes Extra -> https://medium.com/androiddevelopers/room-coroutines-422b786dc4c5

  • Schau mal rein reddit.com/r/androiddev/comments/6dj652/realm_vs_room

    – AesSedai101

    10. November 2017 um 9:20 Uhr

  • @ AesSedai101 danke für den Link, es ist nützlich zu lesen. Der einzige Nachteil ist, dass die Diskussion vor 5 Monaten stattfand, einige Meinungen könnten sich ändern, wenn mehr Leute anfangen, Room zu nutzen

    – Regenmacher

    10. November 2017 um 9:53 Uhr

  • In Bezug auf das Schließen dieser Frage stimme ich nicht zu, dass diese Frage auf Meinungen basiert. Diese Frage fragt nach der Architekturrichtung und wichtigen Überlegungen bei der Wahl zwischen zwei Ansätzen / Bibliotheken. Einige Antworten können auf Meinungen beruhen, aber wenn die Frage gut beantwortet wird, liefert sie den Entwicklern objektive Entscheidungskriterien.

    – socasanta

    16. Januar 2021 um 18:11 Uhr


Benutzer-Avatar
Alexey Zatsepin

Reich

Eine relativ schnelle und komfortable Bibliothek, alle Verknüpfungen sind einfach implementiert, was mit der Objektorientierung der Datenbank zusammenhängt. Hervorragende Dokumentation. Ist derzeit vielleicht eine der besten Optionen zum Speichern von Daten auf einem mobilen Gerät, das Minus kann nur eine Vergrößerung der apk-Datei um 2,5 MB sein.

Zimmer

Eine interessante Lösung, die auf der Google I / O 2017 als optimal für die Arbeit mit der Datenbank unter Android OS vorgestellt wurde. Trotz der Notwendigkeit, explizite SQL-Anfragen zu verwenden, stellte sich die Bibliothek als recht praktisch heraus und sie gefiel mir persönlich. Die Leistung steht im Vordergrund, daher würde ich Ihnen raten, sich für diese spezielle Bibliothek zu entscheiden. Der große Vorteil davon basiert auf der eingebauten SQLite-Datenbank. Da diese von Google eingereichte Lösung schnell populär wird, wird es keine Probleme geben, Lösungen für Probleme zu finden, die damit einhergehen.

Realm verwendet mehr RAM und erhöht die APK-Größe und die Bauzeit. Also bevorzuge ich Zimmer.

Es gibt Vergleich: https://github.com/AlexeyZatsepin/Android-ORM-benchmark

  • Ich hatte es noch nie benutzt, aber meiner Meinung nach wird es die gleichen Probleme und Vorteile wie Realm haben.

    – Alexey Zatsepin

    19. März 2018 um 14:24 Uhr

  • @AlexeyZatsepin Wenn Sie die apk basierend auf der Architektur aufteilen, werden keine 2,5 MB Speicherplatz benötigt. Es wird basierend auf der Architektur reduziert.

    – Ravi Yadav

    23. Mai 2018 um 12:31 Uhr

  • Ich habe es in einer Demo-App ausprobiert, es ist nicht schlecht (einfach zu bedienen), aber die Dokumentation ist einfach nicht gut genug. Außerdem scheint es eine Reihe von Problemen zu geben, die sie zuerst noch lösen müssen (z. B. habe ich 2 Monate darauf gewartet, dass ihr rxjava-Adapter ordnungsgemäß funktioniert). Und eines der größten Probleme, die ich habe, ist die automatische Migration. Auf dem Papier klingt es großartig, aber es hat auch das Potenzial, Dinge unvorhersehbar und unauffindbar zu machen, und die nicht gerade gute Dokumentation bedeutet, dass ich am Ende ein- oder zweimal die Datenbank durcheinander bringe. (Fortsetzung)

    – Louis Tsai

    11. Juni 2018 um 10:49 Uhr

  • Am Ende bin ich für die Produktionsversion derselben App in den Raum umgezogen, um ein besseres Gleichgewicht zwischen Benutzerfreundlichkeit und Stabilität zu finden (Raum ist noch neu, aber zumindest sqlite ist es nicht und es ist nicht allzu schwer, Ressourcen oder Leute zu finden, die helfen können )

    – Louis Tsai

    11. Juni 2018 um 10:49 Uhr

  • Für Realm ist Ihr Benchmark-Vergleich unfair. Es basiert auf einer sehr alten Version von Realm, aber was noch wichtiger ist, Sie verwenden ineffizienten Code für die Implementierung, wodurch es langsamer erscheint, als es bei richtiger Verwendung ist

    – Tim

    20. November 2018 um 10:51 Uhr


Benutzer-Avatar
Farshad Tahmasbi

Der Hauptgrund, warum wir darauf gedrängt haben, eine Bibliothek für die Datenbank zu verwenden, ist die Tatsache, dass wir damit unsere Objekte modellieren und CRUD einfacher machen konnten, damit habe ich gute Erfahrungen gemacht Reiches ist wirklich einfach einzurichten und zu arbeiten, es ist schnell und flexibel, aber die Größe der Bibliothek war ein Problem, es ist möglich, die APK-Größe zu reduzieren, indem APKs auf Build-Ziel-ABI aufgeteilt werden, aber ich habe es vorgezogen, es zu verwenden GreenDao weil es auf SQLite basiert, obwohl ich denke, dass es einige Nachteile wie jede andere Bibliothek hat, aber es war die beste Option für mich.

Ehrlich gesagt habe ich Room noch nicht ausprobiert, aber mit einem kurzen Blick auf die Dokumente werden Sie feststellen, dass es flexibler und entwicklerfreundlicher ist. Als Google-Fan verwende ich lieber die Bibliothek von Google Guys! Wie ich schon sagte, bevorzuge ich a Schicht über nativem SQLite zu einem ganz neue Datenbankbibliothek.

Ich werde Room in meinem nächsten Projekt ausprobieren und meine Erfahrungen später hier in einem Update teilen, hoffe es hilft.

  • Nachdem ich mit dem Raum herumexperimentiert hatte, stellte ich ein großes Problem fest, die Behandlung der Ausnahme von Datenbankoperationen. Derzeit denke ich, dass es keine Möglichkeit gibt, die db-Ausnahmen zu behandeln. Außerdem gibt es keine Möglichkeit für die Datenbank-Callbacks wie Zeilen-ID-Callback bei Insert , Update usw.

    – SUHAS REKHU

    7. Mai 2021 um 6:01 Uhr

1257540cookie-checkRealm VS Room in Android [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy