作为Xamarin开发人员,我曾经使用 Sqlite 作为移动数据库,
最近境界出现了
关于它们之间的差异的任何想法
表演&易于使用..等等?
使用其中任何一种的最佳做法是什么?
答案 0 :(得分:21)
Realm和Sqlite在很多方面都有很大不同。
以下是您可以通过两篇文章来了解主要区别:
System Properties Comparison Realm vs. SQLite
5 Reasons Why You Should Choose Realm Over CoreData/SQLite
正如Slavia在评论中所建议的那样,还要看看this article对几个ORM的比较,包括Realm。
答案 1 :(得分:21)
我是Realm的Xamarin团队的开发人员,所以我可以告诉你更多关于Xamarin产品的工作原理。
Realm有一个C ++核心,在所有产品中都很常见。这就是为什么我们为每个平台发布而不仅仅是一种语言 - 我们需要包含本机核心。虽然我们支持代码的PCL版本,但我们没有 PCL库 - 在构建时,您的PCL代码将链接到匹配的IOS或Android库。
所有Realm产品都是单独开发的,为给定的编程语言提供惯用的界面,在代码和数据之间尽可能地使用。
这意味着,例如,C#产品提供LINQ进行查询,并使用C#对象作为定义数据模型的方法。在构建时,运行Fody代码生成器以添加属性设置器和getter,这样您的C#对象将直接与核心C ++数据交互。与典型的ORM产品不同,不会将数据从数据库复制到缓冲区,然后再复制到对象中。
领域数据是内存映射的,所以它直接从你的代码到存储。我们生成替换自动属性getter和setter的访问器方法。
我们使用术语零拷贝来描述这一点。相比之下,大多数其他系统将具有C#对象,这些对象具有支持其属性的字段。这些对象通常通过从已从磁盘存储中读取的SQLite缓冲区进行复制来填充。这是两个级别的复制。