74 votes

Realm VS Room dans Android

Je construis une application et j'ai besoin d'utiliser une base de données dans celle-ci. J'envisage d'utiliser Room, car il s'agit d'une nouvelle technologie très en vogue en ce moment. Mais j'ai aussi entendu beaucoup d'éloges sur Realm. Quelqu'un peut-il m'indiquer les avantages éventuels de chacun d'eux ?

J'ai fait mes recherches et lu les documents, mais je n'ai pas l'expérience nécessaire pour comprendre moi-même.

Documents de salle

Docs sur le royaume

EDIT :

Cela fait un certain temps et je peux vous indiquer une autre raison d'utiliser Room. Bien que vous puissiez utiliser Realm et Transformations pour lier les choses avec LiveData, avec Room vous pouvez directement retourner LiveData (et aussi les types RXJava en utilisant un plugin) pour la base de données, ce qui vous épargnera du code passe-partout et des maux de tête.

EDIT 2 :

En plus de la première modification, Room a maintenant un support de première classe pour les coroutines en Kotlin, donc si vous prévoyez d'utiliser ces dernières, ce sera un atout ->. https://medium.com/androiddevelopers/room-coroutines-422b786dc4c5

0 votes

0 votes

@AesSedai101 merci pour le lien, c'est utile à lire. Le seul inconvénient est que la discussion a eu lieu il y a 5 mois, certaines opinions pourraient changer lorsque plus de personnes ont commencé à utiliser Room.

1 votes

En ce qui concerne la fermeture de cette question, je ne suis pas d'accord avec le fait que cette question soit basée sur une opinion. Cette question demande une orientation de l'architecture et des considérations clés lors du choix entre deux approches / bibliothèques. Certaines réponses peuvent être basées sur des opinions, mais si la question est bien traitée, elle fournira des critères de décision objectifs aux développeurs.

86voto

Alexey Zatsepin Points 909

Realm

Une bibliothèque relativement rapide et pratique, tous les liens sont simplement mis en œuvre, ce qui est lié à l'orientation objet de la base de données. Excellente documentation. Est, peut-être, l'une des meilleures options pour stocker des données sur un appareil mobile à l'heure actuelle, le moins peut seulement être une augmentation de la taille du fichier apk de 2,5 Mo.

Chambre

Une solution intéressante présentée sur Google I/O 2017 comme optimale pour travailler avec la base de données sur Android OS. Malgré le fait qu'il est nécessaire d'utiliser des requêtes sql explicites, la bibliothèque s'est avérée être assez pratique et je l'ai personnellement aimé. Sur la performance est en tête, donc je vous conseille de choisir cette bibliothèque particulière. Le gros avantage de cette solution est basé sur la base de données SQLite intégrée. Puisque cette solution, soumise par Google, elle deviendra rapidement populaire, et, par conséquent, il n'y aura pas de problèmes pour trouver des solutions aux problèmes qui surviennent avec elle.

Realm utilise plus de RAM et augmente la taille de l'apk, le temps de construction. Je préfère donc Room.

Il y a des comparaisons : https://github.com/AlexeyZatsepin/Android-ORM-benchmark

7 votes

Nous avons un nouveau candidat ObjectBox, qu'en est-il ?

1 votes

Je ne l'ai jamais utilisé, mais à mon avis, il aura les mêmes problèmes et les mêmes avantages que Realm.

1 votes

@AlexeyZatsepin si vous divisez l'apk en fonction de l'architecture alors il ne prendra pas 2,5 mb d'espace. il sera réduit en fonction de l'architecture.

11voto

ҒάгՏҺαԃ ッ Points 1677

La raison principale qui nous a poussé à utiliser une bibliothèque pour la base de données est le fait qu'elle nous permet de modéliser nos objets et rend le CRUD plus facile, j'ai eu une bonne expérience avec Realm Il est possible de réduire la taille de l'APK en le divisant en fonction de l'ABI de la cible de construction, mais j'ai préféré utiliser la bibliothèque de l'ABI de l'APK. GreenDao parce qu'elle est basée sur SQLite, même si je pense qu'elle a quelques inconvénients comme toutes les autres bibliothèques, mais c'était la meilleure option pour moi.

Honnêtement, je n'ai pas encore essayé Room mais avec un bref regard sur les documents, vous trouverez qu'il est plus flexible et plus convivial pour les développeurs. En tant que fan de Google, je préfère utiliser la bibliothèque des gars de Google ! Comme je l'ai déjà dit, je préfère une sur la couche SQLite native à un une toute nouvelle bibliothèque de bases de données .

Je vais essayer Room dans mon prochain projet et je partagerai mon expérience ici dans une mise à jour ultérieure, j'espère que cela vous aidera.

1 votes

Vous avez aimé Room ? :)

0 votes

Après avoir expérimenté avec la pièce, j'ai découvert un grand souci, le traitement des exceptions provenant des opérations de base de données. Actuellement, je pense qu'il n'y a aucun moyen de gérer les exceptions de la base de données. De même, il n'y a aucun moyen de gérer les rappels de base de données tels que le rappel de l'identifiant de la ligne lors de l'insertion, de la mise à jour, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X