2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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:003234
用户头像

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

关注

评论

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

【Redis 故障排查】「连接失败问题排查和解决」带你总体分析CPU及内存的使用率高问题排查指南及方案

码界西柚

redis 性能调优 缓存服务 2月日更

再获权威认证!秒云顺利通过ISO20000、27001双系统认证

MIAOYUN

ISO9001 ISO20000 ISO27001

关于使用消息队列今天被面试官问倒了

SpringBoot 如何保证接口安全?老鸟们都是这么玩的!

Java Spring Boot 接口

软件测试/测试开发 | 网页 frame 与多窗口处理

测试人

软件测试 自动化测试 测试开发 Web自动化测试

进击中的 Zebec 生态,Web2 与 Web3 世界的连接器

BlockChain先知

Svelte框架结合SpreadJS实现表格协同文档

葡萄城技术团队

活动预告|Triton Meetup 2023

AI Infra

AI

一文盘点,ZBC的应用场景与通缩场景

鳄鱼视界

线程私有变量ThreadLocal详解

Java随想录

Java 线程 并发

大数据培训零基础的方法有哪些

小谷哥

模块6如何设计微服务架构

程序员小张

Sentinel 是如何实现分布式限流的?

sentinel 分布式限流

面试官:谈谈你对JVM内存结构的理解

Java JVM

5 如何优雅的告诉老板复制 ChatGPT几乎是“impossible”的?

涛哥 数字产品和业务架构

ChatGPT 业务架构师

大数据培训学习选择哪个机构好

小谷哥

啊啊啊!小程序小游戏也可以在自己的App上架❗️❗️

没有用户名丶

微信小程序 小程序游戏

热点面试题: Array中有哪些非破坏性方法?

沉浸式趣谈

JavaScript array 前端面试题 Javascript框架 超全前端面试题

探讨丨传统行业必须数字化转型吗?

优秀

数字化转型

用户卖家平台三方螺旋成长 如何让商品推荐更智能

阿里技术

全球化技术能力

Java培训有哪些不同的学习方法

小谷哥

ChatGPT时代的打工人众生相

白洞计划

ChatGPT

OneFlow源码解析:Eager模式下的SBP Signature推导

OneFlow

人工智能 深度学习 框架解析

秒云加入金兰组织,携手共建信创新生态

MIAOYUN

信创 信创云 信创产业 金兰组织

中美ChatGPT的商业化分野

脑极体

ChatGPT

软件测试/测试开发 | web 控件的交互进阶

测试人

软件测试 自动化测试 测试开发 Web自动化测试

新年伊始,谈谈开源软件供应链安全的新趋势

安势信息

开源软件 清源CleanSource SCA 安势信息 ChatGPT 开源软件供应链安全

只用了半个Redisson的Semaphore实现并发控制

Java 并发控制 Semaphore redisson

银行业上云进行时,OLAP 云服务如何解决传统数仓之痛?

Kyligence

OLAP技术 传统数仓

音乐APP用户争夺战,火山引擎VeDI助力用户体验升级!

字节跳动数据平台

大数据 增长 音乐 企业号 2 月 PK 榜

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