开发工具:
文件大小: 917kb
下载次数: 0
上传时间: 2019-04-06
详细说明:极客班C++ 样本项目Project目标
开发一款程序库,在内存中启动一个或多个Key- Value pair
组成的数据库。
提供数据库基本的增、删、改操作
提供数据库从内存Dump到文件系统功能;
提供数据库从文件系统LOad到内存的功能
提供数据库的遍历和搜索功能
在数据库中添加索引
*Compound file structure(复合文档结构)的文件结构实现
*为高级功能需求
整体实现架构
Create Insert Update Update
Memory.
File System
In-memory
Dump
Data
DB File
In-memory
Load
Data
DB File
接
CreateDatabase
在内存中创建一个新的数据库
以何种数据结构创建? Vector?List?Map? Hashtable?
InsertKey value
在数据库中插入Key/vaue
■插入时是否允许键值重复?
UpdateKeyvalue
更新数据库中的 Key/value
考虑搜寻指定的Key所需要的复杂度
接口(续)
DeleteKey Value
删除数据库中的 Key/value
考虑搜寻指定的Key所需要的复杂度
Querykey value
在数据库中查找Key/aue
查询效率取决于内存结构
如果允许重复的Key, Query的结果应该是一组key/aue
可以利用索引提供查询效率
接口(续)
DumpDatabase
■将内存数据库写入文件系统
文件格式的定义?
n如果有多个Key/aue的内存库,如何存放?
Load Database
将文件系统数据库加载至内存
内存的几种结构
array of
(key [o], value lo])
线性分布
(key ll, value[1])
indexes
可添加索引提高查询和搜索效率
(key [2], value[2]
(key li], valueIs)
list
(kcy[n], valuc[nl)
链表结构
对于删除和查询有效率问题
可添加索引提高搜索效率
(key[o], value[oj)
(key[l, valuell])
(key li], valueis
(key [n], value[n])
eⅹt
米Next
米Next
冰Next
内存的几种结构(续)
map key Co! value COl
key [11
value[1]
key[i] value[i]
key [n] value[n]
hashtable
buckets
entries
key[0」
0
key o
value
hash函数的选择
key [l]
lⅩ
碰撞的解决方法
2
ky[1]
value
Separate chaining using linked list
key li
key [i] value
Separate chaining with list head cells
151
key [jl
[I value
254
查询具有较高效率
key ln
255X
key [n] valuc
文件结构
Flat file structure(平面文件结构)
文件头
Ke
ey size
Value size
K
Value
Separator
(bytes)
(bytes)
(fixed size)
Key size
alue size
Key size
ey
(bytes)
Value
Separator
(bytes)
(fixed size)
(bytes)
Value size
Key
Value
(bytes)
S
separator
(fixed size)
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.