完全可以做数据库,缺失的特性可以自己补足即可。。。
Atitit 使用redis作为数据库存储引擎 attilax总结 艾提拉总结
1. Redis映射数据库表存储引擎 1
1.1. 1.Page和Block 定义 1
1.2. 数据块(Block) 1
1.3. ROWID 2
1.4. 最简化page定义,一个page即是一个记录 2
2. 索引引擎 2
2.1. 存储 dpt1.index:page1,page2 2
2.2. 建立索引 2
2.3. 更新索引 2
3. 查询 通过遍历或者索引模式 3
4. 更新 注意需要加锁 3
5. Key的模式 schema:primaykey 3
6. 复杂查询 使用 linq模式 或增加sql引擎 3
6.1. Where查询 3
6.2. Groupby 查询 3
6.3. Join连接 3
7. 其他 3
7.1. 不同数据库的page block segment区别 3
7.2. 事务支持 自己增加事务即可 4
7.3. Sql支持,自己实现增加 4
7.4. 视图 外键 自己实现增加 4
7.5. 范围查询 做btree索引 4
1. Redis映射数据库表存储引擎
1.1. 1.Page和Block 定义
SSD的硬盘有page和block的概念。Page大小为4K,Block大小为512K(即128个Block)。
1.2. 数据块(Block)
数据块是数据库中数据在磁盘中存储的最小单位,也是一次IO访问的最小单位,一个数据块通常可以存储多条记录,数据块大小是DBA在创建数据库或表空间时指定,可指定为2K、4K、8K、16K或32K字节。下图是一个Oracle数据库典型的物理结构,一个数据库可以包括多个数据文件,一个数据文件内又包含多个数据块;
数据库磁盘存储最小单元数据块(Data Block or Data Page)
1.3. ROWID
ROWID是每条记录在数据库中的唯一标识,通过ROWID可以直接定位记录到对应的文件号及数据块位置。ROWID内容包括文件号、对像号、数据块号、记录槽号,如下图所示:
20个记录就是6kb了。。
1.4. 最简化page定义,一个page即是一个记录
2. 索引引擎
2.1. 存储 dpt1.index:page1,page2
2.2. 建立索引
2.3. 更新索引
3. 查询 通过遍历或者索引模式
4. 更新 注意需要加锁
5. Key的模式schema:primaykey
schema:key 形式做为键值,其中
schema: 可理解为传统数据库中的表名 key: 可理解为表中的主键
6. 复杂查询 使用 linq模式 或增加sql引擎
6.1. Where查询
6.2. Groupby 查询
6.3. Join连接
7. 其他
7.1. 不同数据库的page block segment区别
1.Oracle中一个数据块的大小默认是2KB(支持2KB,4KB,8KB,16KB,32KB),而DB2中则默认是4KB(支持4KB,8KB,16KB,32KB);
2.Oracle中有段(Segment)的概念,而DB2中没有这一概念,表空间直接是各个容器(数据文件)中的区(Extent)组成,不过也还是有一个很弱化的Extent组概念。下面提到的关于Segment的内容则全部是针对Oracle的;
3.Oracle中的数据块称为Oracle Block,而DB2中则直接称为Data Page(数据页)。
4.Oracle中的Extent称为区,而DB2中则称为扩展数据块。为方便阅读,本文中统称为区。
7.2. 事务支持 自己增加事务即可
7.3. Sql支持,自己实现增加
7.4. 视图 外键 自己实现增加
7.5. 范围查询 做btree索引