完全可以做数据库,缺失的特性可以自己补足即可。。。

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索引