Realm vs Sqlite для мобильной разработки

Я разработчик Xamarin, я использовал Sqlite как мобильную базу данных,
недавно появилось Realm.
Любая идея о Разницах между ними в Производительность и простота использования....cd?

Какова наилучшая практика использования одного из них?

Ответы

Ответ 1

Царство и Sqlite во многих аспектах совершенно разные.

Вот две статьи, которые вы могли бы изучить, чтобы понять основные отличия:

Сравнение свойств системы с SQLite
5 причин, по которым вам следует выбирать область над CoreData/SQLite

Как было предложено в комментариях Славии, взгляните на эту статью для сравнения нескольких ORM, включая Realm.

Ответ 2

Я разработчик команды Xamarin в Realm, поэтому я могу рассказать вам немного больше о том, как работает Xamarin.

Realm имеет ядро ​​С++, которое является общим для всех продуктов. Вот почему мы выпускаем для каждой платформы, а не только язык - нам нужно включить собственное ядро. Несмотря на то, что мы поддерживаем сборку PCL вашего кода, у нас нет библиотеки PCL как таковой - во время сборки ваш код PCL будет ссылаться на соответствующую библиотеку IOS или Android.

Все продукты Realm разрабатываются индивидуально для обеспечения идиоматического интерфейса для данного языка программирования с максимально возможным слоем между вашим кодом и данными.

Это означает, что, например, продукт С# предоставляет LINQ для запроса и использует объекты С# в качестве средства определения модели данных. Во время сборки генератор кода Fody запускается, чтобы добавить средства определения свойств и геттеры, чтобы ваши объекты С# напрямую взаимодействовали с основными данными на С++. В отличие от типичных продуктов ORM, нет копирования данных из базы данных в буферы, а затем снова в ваши объекты.

Данные в области данных отображаются в памяти, поэтому они переходят непосредственно из вашего кода в хранилище. Мы создаем методы доступа, которые заменяют автотестеры и сеттеры.

Мы используем термин zero-copy для описания этого. Напротив, большинство других систем будут иметь объекты С#, которые имеют поля, поддерживающие их свойства. Эти объекты часто заполняются копированием из буфера SQLite, который был прочитан с дискового хранилища. Это два уровня копирования.