web-dev-qa-db-fra.com

Realm vs Sqlite pour le développement mobile

Je suis un développeur Xamarin, j'utilisais Sqlite comme base de données mobile,
récemment domaine vient à l'image.
Avez-vous une idée des différences entre les performances et la facilité d'utilisation ... etc.?

Quelle est la meilleure pratique d'utilisation de l'un ou l'autre?

23
Medo Medo

Realm et Sqlite sont très différents à bien des égards.

Voici deux articles que vous pourriez parcourir pour saisir les principales différences:

domaine de comparaison des propriétés système vs SQLite
5 raisons pour lesquelles vous devriez choisir le domaine plutôt que CoreData/SQLite

Comme suggéré par Slavia dans les commentaires, jetez également un œil à cet article pour une comparaison de plusieurs ORM, dont Realm.

22
Mohammed Ali

Je suis développeur au sein de l'équipe Xamarin de Realm, je peux donc vous en dire un peu plus sur le fonctionnement du produit Xamarin.

Le domaine possède un noyau C++ commun à tous les produits. C'est pourquoi nous publions pour chaque plateforme plutôt que juste une langue - nous devons inclure le noyau natif. Bien que nous prenions en charge les versions PCL de votre code, nous n'avons pas bibliothèque PCL en tant que telle - au moment de la construction, votre code PCL sera lié à la correspondance IOS ou = Android bibliothèque.

Tous les produits Realm sont développés individuellement pour fournir une interface idiomatique pour un langage de programmation donné, avec une couche aussi mince que possible entre votre code et les données.

Cela signifie, par exemple, que le produit C # fournit LINQ pour les requêtes et utilise des objets C # comme moyen de définir le modèle de données. Au moment de la construction, le générateur de code Fody est exécuté pour ajouter des setters et des getters de propriété afin que vos objets C # interagissent directement avec les données C++ principales. Contrairement aux produits ORM typiques, il n'y a pas de copie des données de la base de données dans des tampons, puis à nouveau dans vos objets.

Les données du domaine sont mappées en mémoire, elles vont donc directement de votre code au stockage. Nous générons des méthodes d'accesseur qui remplacent les getters et setters de propriété automatique.

Nous utilisons le terme zero-copy pour décrire cela. En revanche, la plupart des autres systèmes auront des objets C # qui ont des champs soutenant leurs propriétés. Ces objets sont souvent remplis en copiant à partir d'un tampon SQLite qui a été lu à partir du stockage disque. C'est deux niveaux de copie.

22
Andy Dent