写点什么

Realm 获得了 10 亿的用户,10 万活跃的开发者,并且发布了 1.0 版本

  • 2016-06-07
  • 本文字数:2061 字

    阅读完需:约 7 分钟

Realm 针对 iOS 和安卓发布了它作为面向对象数据库的 1.0 版本。

两年前的发布后,Realm 打算为了使用设备上的技术,例如SQLite 或Core Data,而提供一个更简单的、性能更高的选择方案。

Realm 的技术团队告诉 InfoQ:在移动数据库的最新发布中值得注意的变化是一个改进的查询语言,其中支持了部分的字符串匹配、关系遍历、多字段排序和去重匹配。本版本还伴随着一些其他的改进,包括在安卓上减少了 70% 的库资源占用,它使用户提交更小型的应用成为可能,并且引入了 Realm 配置类,为越来越多的拥有多 Realm 的应用提供服务。

继它最近的一个为.NET 开发者的响应式数据库 Realm Xamarin 的发布,Realm 1.0 的变更日志包括了以下的支持:

  • 通过 Realm Swift 支持苹果的 Swift 语言
  • Carthage,Swift 的依赖包管理
  • 苹果的 watchOS 和 tvOS
  • 安卓上的 RxJava
  • Kotlin,安卓应用开发的新兴语言

在“ 13949 次提交和 6148 个已关闭的问题之后:感谢大家帮助 Realm 到达 1.0 版本”的博客文章中,Realm 团队展示了下面的 Java 展示的内联代码:

复制代码
// Define you model class by extending RealmObject
public class Dog extends RealmObject {
private String name;
private int age;
// ... Generated getters and setters ...
}
public class Person extends RealmObject {
@PrimaryKey
private long id;
private String name;
private RealmList<dog> dogs; // Declare one-to-many relationships
public Person(long id, String name) {
this.id = id;
this.name = name;
}
// ... Generated getters and setters ...
}
// Use them like regular java objects
Dog dog = new Dog();
dog.setName("Rex");
dog.setAge(1);
// Create a RealmConfiguration that saves the Realm file in the app's "files" directory.
RealmConfiguration realmConfig = new RealmConfiguration.Builder(context).build();
Realm.setDefaultConfiguration(realmConfig);
// Get a Realm instance for this thread
Realm realm = Realm.getDefaultInstance();
// Query Realm for all dogs younger than 2 years old
final RealmResults<dog> puppies = realm.where(Dog.class).lessThan("age", 2).findAll();
puppies.size(); // => 0 because no dogs have been added to the Realm yet
// Persist your data in a transaction
realm.beginTransaction();
final Dog managedDog = realm.copyToRealm(dog); // Persist unmanaged objects
Person person = realm.createObject(Person.class); // Create managed objects directly
person.getDogs().add(managedDog);
realm.commitTransaction();
// Listeners will be notified when data changes
puppies.addChangeListener(new RealmChangeListener<realmresults><dog>>() {
@Override
public void onChange(RealmResults<dog> results) {
// Query results are updated in real time
puppies.size(); // => 1
}
});
// Asynchronously update objects on a background thread
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm bgRealm) {
Dog dog = bgRealm.where(Dog.class).equals("age", 1).findFirst();
dog.setAge(3);
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
// Original queries and Realm objects are automatically updated.
puppies.size(); // => 0 because there are no more puppies younger than 2 years old
managedDog.getAge(); // => 3 the dogs age is updated
}
});
</dog></dog></realmresults></dog></dog>

在 Hacker News 中对 Realm 1.0 的探讨中,围绕主要版本的讨论气氛很积极,其中很多用户给予了他们赞扬和祝贺。在有关 Realm 的闭源“内核”的探讨中,用户 mahyarm 提到了 Realm FAQ 中的评论者:

我在代码中看到指向“内核”的引用,那是什么?

内核是指向我们内部的 C++ 存储引擎。它现在不是开源的,但是我们也确实计划:一旦我们有机会将其整理干净、重命名并最终确定它内部的主要功能,就在 Apache 2.0 许可证下将其开源。同时,它的二进制版本在 Realm 核心(TightDB)二进制许可证下发布。

在 1.0 版本发布的同时,Realm 还汇报了他们的新的里程碑:拥有超过十亿在它支持的 iOS 和安卓应用上的终端用户。

有关对此新闻的看法,Realm 的 CEO Alexander Stigsen 说道:“能看到我们成长之快和使用 Realm 来巩固移动基础设施的公司的高水准是十分激动人心的。达到了十亿的终端用户是一个很少有公司能够达到的里程碑,是一个我们探求移动数据存储创新方法的证明。”

查看英文原文 Realm reaches 1B users,100k active developers, launches version 1.0


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-06-07 19:002975
用户头像

发布了 26 篇内容, 共 68337 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

ClickHouse 和 Elasticsearch 压测对比,谁才是yyds?

程序知音

手把手教你成为荣耀开发者:帐号管理这样做

荣耀开发者服务平台

开发者 手机 安卓 荣耀 honor

eNSP常用命令 华为模拟器eNSP常用命令

Python-派大星

10月月更

武汉前端编程培训的就业前景怎么样

小谷哥

嵌入式 Linux 入门(五、Shell 脚本编程上:认识 Shell 脚本)

矜辰所致

Linux Shell shell脚本编程 10月月更

ClickHouse 冷热分离存储在得物的实践

得物技术

数据库 Clickhouse 存储 日志平台 企业号十月 PK 榜

前端安全沙箱怎样解决开源的安全问题

Geek_99967b

小程序

大数据培训机构该怎么来选择?

小谷哥

10分钟完成模型开发!合合信息智能文字识别服务平台亮相1024程序员节

合合技术团队

人工智能 文档 识别 摩尔纹

Linux---Linux中Ubuntu镜像之下搭建FTP服务

木偶

Linux ubuntu ftp 10月月更

vscode插件设置——Golang开发环境配置

甜点cc

Go ide vscode 插件 10月月更

交换机:广播风暴产生原因与解决方法、STP生成树协议 ,根桥(根交换机)、备份根桥、非根交换机、根端口、指定端口、非根非指定端口、桥ID

Python-派大星

10月月更

9个计算机的“网络层”知识点

华为云开发者联盟

开发 华为云 网络层 企业号十月 PK 榜

AMD x 稀土掘金 1024码上掘金编程挑战赛来了!

猿始人

1024程序员节

超级App成为Gartner预测的战略技术,软件降本增效是否能进一步提速?

Speedoooo

小程序 Gartner预测 超级app 小程序化 超级应用

SENSORO 付刘伟:图分析在城市治理服务的应用与落地

SENSORO

智慧城市 图数据库 图数据 数据服务

用昇腾AI护航“井下安全”

华为云开发者联盟

人工智能 安全 华为云 企业号十月 PK 榜

北京大数据学习培训机构哪个好

小谷哥

SHAREit X Databend | 跨多云 Data Mesh 大数据平台: Why, What and How

Databend

2022仪器仪表行业ERP系统十大品牌排行榜

叶落便知秋

开源时代下,怎样强化自己的应用安全

Geek_99967b

小程序

小间距LED显示屏视频拼接器的技术要求

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

西安java开发培训学习哪家机构好

小谷哥

极客时间架构训练营模块三作业

李晨

2022全球主流一体化ERP系统十大品牌排行榜

叶落便知秋

算法 | 使用栈计算表达式

甜点cc

Go 算法 10月月更

VLAN原理和配置,交换机创建vlan的多种方法、三种接口模式的作用和配置方法、Access、Trunk、Hybrid接口的特性以及配置方法和命令

Python-派大星

10月月更

教你如何解决T+0的问题

华为云开发者联盟

大数据 华为云 企业号十月 PK 榜

数十倍的数据量增长,传统 OLAP 还能应对吗?

Kyligence

大数据 金融行业 OLAP技术

一份阿里内部GC面试手册,仅一周Github获赞96.9K

程序知音

Java JVM Java虚拟机 java架构 后端技术

前端技术培训需要什么条件

小谷哥

Realm获得了10亿的用户,10万活跃的开发者,并且发布了1.0版本_数据库_James Chesters_InfoQ精选文章