数据存储

存储服务提供了完善的账户和 ACL,允许客户端直接调用 LeanCloud 的 API 来存取云端的对象,无需预先定义类型,也不必自己搭建服务器和编写后端接口。

LeanCloud 的数据存储为海量的对象而设计,提供可无限扩展的高可用架构,也是 LeanCloud 最核心的服务。

功能

结构化对象

一个对象就是一张表里的一条记录,字段可以随时增加。查询支持条件、排序、分页和统计,也可以按距离检索地理位置。

文件存储

可用于存放图片、文档、音视频等文件,多副本保存并通过 CDN 分发,可以按需生成缩略图。

ACL 权限控制

读写权限分别设置在整表、单列和单行三个层次上,可以开放给所有人、已登录的用户,或指定的用户与角色。

内建账户系统

用户可以用邮箱或手机号注册登录,也可以用微信、QQ、微博等第三方账户登录。围绕账户还有好友关系和状态流。

LiveQuery

客户端可以订阅一个查询,此后符合条件的数据在云端增删改,都会实时下发到客户端,不必轮询。

搜索与分析

全文搜索让用户能在应用内按关键词找到内容,结果按相关度排序;数据仓库用 SQL 对积累下来的业务数据做统计和分析。

优势和特色

多副本分布保存,提供 99.999% 的数据可靠性和超高并发访问能力。完善的备份机制确保数据万无一失。

扩展功能组件,支持朋友圈、动态消息等常见社区功能,让业务开发更简单便捷。

每天支撑超过 10 亿次请求,峰值压力堪比电商秒杀。自动应对流量高峰,服务稳定可靠。

SDK 支持

客户端 SDK 覆盖这些语言和平台,此外也可以直接调用 REST API。

JavaScript

浏览器 · Node.js · 小程序

Objective-C

iOS · macOS · tvOS · watchOS

Swift

iOS · macOS · tvOS · watchOS

Java

Android · 服务端

C#

.NET · Unity

Python

服务端

PHP

服务端

Go

服务端

Flutter

iOS · Android

Unreal

Unreal Engine

技术介绍

结构化数据实际存储在 MongoDB 集群上,集群由多个副本构成,分离查询的同时提供高可用。除了用户手动创建的索引,还有自动化分析工具来自动结合慢查询创建索引,改善查询性能。

团队最早的成员大多来自 Clojure 社区,因此服务端技术栈主要是 Clojure。服务整体由多个独立的子服务构成,共用一套基础设施:客户端的请求先到达 API Server,由它核对身份与权限,实现 LeanCloud 扩展的额外功能,再调用 MongoDB 完成实际的读写操作。

此外还有一些相对独立的组件:全文搜索基于 Elasticsearch 构建;数据仓库基于 ClickHouse 构建;LiveQuery 则会复用即时通讯的长连接。

价格方案

以中国节点的价格为例。开发版有免费额度,商用版按用量计费,另有企业版需商务洽谈。

开发版商用版
API 请求免费 3 万次 / 天,与即时通讯、消息推送等服务共享额度1.0 元 / 万次
并发线程免费 3 个最大 200 个
数据存储空间免费 1 GB0.10 元 / GB / 天
文件存储空间免费 10 GB0.16 元 / GB / 月
全文搜索免费 1 万次查询 / 天2.5 元 / 万次
LiveQuery免费 100 次订阅 / 天,5000 条下发消息 / 天每千次订阅 4.0 元 / 天,每万条消息 2.0 元 / 天

更新历史

  1. 文件支持智能审核

    可以对指定时间区间内的文件手动审核,也可以开启自动审核,让新上传的文件逐一过审,通过之前文件不可见。

    文件智能审核功能上线

  2. 离线数据分析升级为数据仓库

    此前的离线数据分析升级为数据仓库,把分钟级的复杂查询缩短到秒级,支持更完整的 SQL 和中间结果视图,也能直接从日志表取数。

    离线数据分析功能现已升级为全新的数据仓库

  3. 支持导出 BSON 备份数据

    备份改用 BSON 格式导出,比原有的 JSON Lines 快,可以选最近 7 天里的任意一天,也可以只导出部分 Class。

    LeanCloud 控制台支持导出备份和在线发送短信

  4. 好友关系区分关注与双向好友

    好友关系接口区分单向关注和双向好友,双向好友需要对方确认,申请可以用 LiveQuery 订阅。

    LeanCloud 2020 回顾

  5. 应用内搜索升级为全文搜索

    搜索和分词引擎升级,中英文混排的分词更准,重建索引时新旧版本平滑切换,不再出现搜不到新数据的空档。

    「应用内搜索」于 11 月 1 日独立计费并更名为「全文搜索」

  6. 内建账户增加支付宝和 Apple 登录

    支付宝和 Apple 账户可以像微信、QQ 一样直接用于注册和登录。

    2020 年 7 月更新

  7. 第三方登录账号自动去重

    内建账户系统为 authData 里的每个登录平台按需建立唯一索引,同一平台上的账号不会被重复绑定。

    2020 年 5 月更新

  8. 推出独立部署方案

    存储集群、API 集群和扩展服务集群各自独立部署,物理隔离,由单个应用独享。共享集群上的限制随之放开:并发请求数上限、批量修改和删除、建索引,以及 group by、distinct count 这类聚合查询都可以使用。离线分析和应用内搜索也有独立部署的版本,前者支持自定义函数,后者可以定制分词和排序。

    同年 10 月,独立部署的 API Server 又增加了索引操作和聚合查询的 REST API,跨表 join 和 distinct 这类查询可以直接发给它。

    LeanCloud 独立部署方案和路线图·LeanCloud 2019 回顾·2019 年 10 月更新

  9. LiveQuery 正式发布

    订阅一个 Query,云端数据一有变化就推给客户端,不用再轮询。支持 create、update、delete、enter、leave、login 六种事件,首批可用于 Android、JavaScript 和 iOS SDK。

    多端数据实时同步,LiveQuery 轻松搞定

  10. 文件存储支持海外 CDN 和 HTTPS

    中国节点默认开启海外 CDN,境外用户不必再回国内取文件;文件地址也可以改用 HTTPS。

    文件存储全面支持海外 CDN 和 HTTPS 访问协议

  11. 开放 Schema 查询与 Class 遍历接口

    两个需要 Master Key 的新接口:查询一个 Class 的 Schema,用来做平台管理工具和代码生成;遍历整个 Class,用来做批处理。

    2016 年 7 月更新

  12. 支持日志型数据表

    为日志和事件这类写完不再修改的数据准备的表,写入更快、吞吐更高,代价是不能更新、删除和查询。数据每天自动进入离线分析。

    数据存储支持新类型,专为日志型存储需求优化

  13. 支持自助创建索引

    索引功能重新开放,一个 Class 的唯一索引可以在控制台上自行设置。

    2015 年 10 月更新

  14. 离线数据分析发布

    可以对应用数据跑 SQL,支持 join、group by 和聚合函数——这些都是 CQL 做不到的,此前只能每天把数据导出来自己算。次月起分析结果可以导出,或另存为一个 Class。

    LeanCloud 离线数据分析功能介绍

  15. 文件支持设置 ACL

    AVFile 可以像普通对象一样读写 ACL。

    2014 年 12 月上旬更新

  16. CQL 支持用 SQL 语法查询

    Cloud Query Language 是 SQL 的一个子集,把 AVQuery 的条件写成 select ... from ... where ... 的形式,它是查询 API 的一层封装。

    CQL 使用简介

  17. 应用内搜索发布

    为开启搜索的 Class 建立全文索引,用类似搜索引擎的语法查询,结果按相关度排序,还可以通过 DeepLink 直接跳进应用内的对应页面。首发只提供 Android 组件,这项功能后来更名为全文搜索。

    2014 年 5 月第二周更新

  18. 推出 Class 绑定功能

    一个 Class 可以绑定到同账号下另一个应用的 Class,单独授予读、写、删除权限,两张表此后共享全部数据。典型用法是把新应用的 _User 绑到老应用,让老用户不必重新注册。

    2014 年 3 月第四周更新

  19. 发布事件流系统

    建在内建账户系统上的一组社交接口:用户之间可以关注,关注关系存在 _Follower_Followee 表里;发布的状态进入粉丝的收件箱,按时间倒序读取。动态消息、朋友圈这类功能不用自己建表和写扇出逻辑。

    同年 10 月,关注关系可以带上自定义属性,属性能用作查询条件和排序字段。

    Android 发布事件流系统·2014 年 10 月下旬更新

  20. API 改用签名鉴权

    请求不再在 HTTP 头中携带 App Key,改为携带签名,Key 不会随请求发出去。

    2014 年 1 月第二周更新

  21. 支持数据导入与导出

    一个 Class 的数据可以导出成 JSON,也可以从 JSON 导入。导入接受 Parse.com 导出的格式,从 Parse 迁过来的应用可以把数据直接传上去。

    2013 年 9 月第一周更新

  22. 文件支持元信息、缩略图与按 URL 创建

    文件记录下大小和上传者等元数据,可以生成缩略图 URL,也可以由一个外部 URL 创建文件对象,不必把字节传到云端。

    2013 年 9 月第一周更新

  23. 应用支持 Master Key 超级权限

    在 App Key 之外新增一个拥有超级权限的密钥,可以越过 Class 权限和对象 ACL 操作任何对象,自建的后台管理系统用它。

    2013 年 8 月第四周更新

数据来源

功能介绍与价格参考了 LeanCloud 官网的 数据存储产品页开发文档;「优势和特色」段落原文摘录自官网。

更新历史整理自 LeanCloud Blog 的产品更新汇总、月度通讯和单独发布的公告。