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, который был прочитан с дискового хранилища. Это два уровня копирования.