示例
以记事本应用为例,此应用支持通过浏览器和移动客户端两种方式存取数据。下面是基于关系数据库的表设计:
CREATE TABLE note (
userId VARCHAR(64) NOT NULL,
noteId INT8 NOT NULL, -- 自增ID
title VARCHAR(256),
content VARCHAR(2048),
version INT,
mtime BIGINT,
category VARCHAR(16),
PRIMARY KEY(userId, noteId),
INDEX(userId, mtime), -- 修改时间索引
INDEX(userId, category) -- 类别标签索引
);
假设应用有四种访问模式:
1.根据noteId查询一条笔记的详细信息
2.根据noteId保存一条笔记的详细信息(可对version进行条件写入,以检测是否有并发修改)
3.根据笔记的修改时间进行扫描分页查询,仅显示title,用户可点击进一步查看一条笔记详细信息
4.根据笔记的类别标签进行查询
表定义
对于此应用,可以转化为SDS的表定义:
- 实体组键 - userId,开启哈希分布
- 主键 - noteId,逆序编码
- 修改时间索引 - mtime,逆序编码,eager类型的索引。并对title和noteId做投影
- 类别索引 - category,lazy类型的索引
本指南的API都将以这个表为示例进行讲解