|
@ -44,6 +44,8 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 一,实验目的 |
|
|
## 一,实验目的 |
|
|
在 LevelDB 的基础上设计和实现一个支持二级索引的功能,优化特定字段的查询效率。通过此功能,用户能够根据字段值高效地检索对应的数据记录,而不需要遍历整个数据库。 |
|
|
在 LevelDB 的基础上设计和实现一个支持二级索引的功能,优化特定字段的查询效率。通过此功能,用户能够根据字段值高效地检索对应的数据记录,而不需要遍历整个数据库。 |
|
|
|
|
|
|
|
@ -52,6 +54,8 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 二,项目背景概述 |
|
|
## 二,项目背景概述 |
|
|
|
|
|
|
|
|
#### 1. **背景与需求** |
|
|
#### 1. **背景与需求** |
|
@ -87,6 +91,8 @@ name:Customer#000000002-k_2 : k_2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 三,`LevelDB`二级索引设计思路 |
|
|
## 三,`LevelDB`二级索引设计思路 |
|
|
|
|
|
|
|
|
#### 1. **设计结构** |
|
|
#### 1. **设计结构** |
|
@ -221,6 +227,8 @@ lessCopy code 主数据库 (DBImpl) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 四,具体实现 |
|
|
## 四,具体实现 |
|
|
|
|
|
|
|
|
### 1. **DBImpl 类的设计** |
|
|
### 1. **DBImpl 类的设计** |
|
@ -489,6 +497,8 @@ Status DBImpl::Delete(const WriteOptions& options, const Slice& key) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 五,性能测试 |
|
|
## 五,性能测试 |
|
|
### 1.测试流程 |
|
|
### 1.测试流程 |
|
|
|
|
|
|
|
@ -572,6 +582,8 @@ Level Files Size(MB) Time(sec) Read(MB) Write(MB) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 六,问题与解决方案 |
|
|
## 六,问题与解决方案 |
|
|
|
|
|
|
|
|
### 1. **问题:如何避免** `**indexDb_**` **的递归调用?** |
|
|
### 1. **问题:如何避免** `**indexDb_**` **的递归调用?** |
|
|