From d12a30eb1b5240dcf3dcdffb330013b002542e1a Mon Sep 17 00:00:00 2001
From: kevinyao0901 <kevinyao0901@163.com>
Date: Mon, 23 Dec 2024 14:59:47 +0800
Subject: [PATCH] Update Readme.md

---
 README.md | 45 +++++++++++++++++++--------------------------
 1 file changed, 19 insertions(+), 26 deletions(-)

diff --git a/README.md b/README.md
index 6a1f434..3b59ab2 100644
--- a/README.md
+++ b/README.md
@@ -10,20 +10,13 @@
   - [2. **设计目标**](#2-设计目标)
 - [三,`LevelDB`二级索引设计思路](#三leveldb二级索引设计思路)
   - [1. **设计结构**](#1-设计结构)
-  - [2.1 **核心组件**](#21-核心组件)
-  - [2.2 **数据结构**](#22-数据结构)
-  - [2.3 **字段管理**](#23-字段管理)
-  - [2.4 **数据结构关系图**](#24-数据结构关系图)
+    - [1.1 **核心组件**](#11-核心组件)
+    - [1.2 **数据结构**](#12-数据结构)
+    - [1.3 **字段管理**](#13-字段管理)
+    - [1.4 **数据结构关系图**](#14-数据结构关系图)
   - [3. **计划实现细节**](#3-计划实现细节)
-    - [3.1 数据插入流程 (`Put`)](#31-数据插入流程-put)
-    - [3.2 数据删除流程 (`Delete`)](#32-数据删除流程-delete)
-    - [3.3 查询流程](#33-查询流程)
   - [4. **动态索引管理**](#4-动态索引管理)
-    - [4.1 动态创建索引](#41-动态创建索引)
-    - [4.2 动态删除索引](#42-动态删除索引)
   - [5. **事务与回滚机制**](#5-事务与回滚机制)
-    - [5.1 事务设计](#51-事务设计)
-    - [5.2 回滚机制](#52-回滚机制)
   - [6. **设计的优势**](#6-设计的优势)
   - [7. **未来优化方向**](#7-未来优化方向)
 - [四,具体实现](#四具体实现)
@@ -102,14 +95,14 @@ name:Customer#000000002-k_2 : k_2
 #### 1. **设计结构**
 在 `LevelDB` 的基础上扩展,补充并实现以下组件:
 
-##### 2.1 **核心组件**
+##### 1.1 **核心组件**
 1. **主数据库(DBImpl)**:  
    存储用户原始数据的键值对,提供 `Put`、`Delete` 和 `Get` 方法。
    
 2. **二级索引数据库(indexDb_)**:  
    专门存储索引数据,键为 `fieldName:fieldValue`,值为主数据库中对应的主键。
 
-##### 2.2 **数据结构**
+##### 1.2 **数据结构**
 1. **主数据库键格式**:  
    使用字符串表示,例如:`userID:123|name:JohnDoe`,包含多个字段。
    
@@ -119,10 +112,10 @@ name:Customer#000000002-k_2 : k_2
 3. **映射关系**:  
    二级索引数据库的值存储主数据库的主键,用于指向完整数据记录。
 
-##### 2.3 **字段管理**
+##### 1.3 **字段管理**
 - `fieldWithIndex_`:一个集合,用于管理需要创建索引的字段,支持动态增删。
 
-#### 2.4 **数据结构关系图**
+#### 1.4 **数据结构关系图**
 
 以下是主数据库和二级索引数据库的逻辑关系示意图:
 
@@ -151,9 +144,9 @@ lessCopy code                     主数据库 (DBImpl)
 
 ---
 
-#### 3. **计划实现细节**
+#### 2. **计划实现细节**
 
-##### 3.1 数据插入流程 (`Put`)
+##### 2.1 数据插入流程 (`Put`)
 1. 用户调用 `Put` 将数据插入到主数据库。
 2. 从用户数据中解析需要创建索引的字段及其值。
 3. 构造二级索引的键值对,并插入到二级索引数据库中。
@@ -163,7 +156,7 @@ lessCopy code                     主数据库 (DBImpl)
 - 需要先提交主数据库事务,再提交二级索引数据库事务。
 - 索引更新时要考虑覆盖旧索引的场景。
 
-##### 3.2 数据删除流程 (`Delete`)
+##### 2.2 数据删除流程 (`Delete`)
 1. 用户调用 `Delete` 从主数据库删除数据。
 2. 在删除前,读取原始数据以提取相关字段的索引键。
 3. 删除主数据库中的数据。
@@ -181,26 +174,26 @@ lessCopy code                     主数据库 (DBImpl)
 
 ---
 
-#### 4. **动态索引管理**
-##### 4.1 动态创建索引
+#### 3. **动态索引管理**
+##### 3.1 动态创建索引
 - 提供接口 `CreateIndex(fieldName)`,用于动态为字段创建索引:
   - 遍历主数据库的所有记录。
   - 根据指定字段生成索引键值对并插入到二级索引数据库。
   - 将字段名添加到 `fieldWithIndex_` 集合。
 
-##### 4.2 动态删除索引
+##### 3.2 动态删除索引
 - 提供接口 `DeleteIndex(fieldName)`,用于动态删除字段索引:
   - 遍历二级索引数据库,删除与该字段相关的索引键。
   - 从 `fieldWithIndex_` 集合中移除字段名。
 
 ---
 
-#### 5. **事务与回滚机制**
-##### 5.1 事务设计
+#### 4. **事务与回滚机制**
+##### 4.1 事务设计
 - 使用 `WriteBatch` 封装多个操作(如 `Put` 和 `Delete`)。
 - 在主数据库和二级索引数据库上分别维护独立事务。
 
-##### 5.2 回滚机制
+##### 4.2 回滚机制
 - 在主数据库操作失败时直接返回错误,不影响索引。
 - 在二级索引操作失败时,回滚主数据库的写入或删除操作:
   - 对 `Put` 操作,删除已插入的数据。
@@ -208,7 +201,7 @@ lessCopy code                     主数据库 (DBImpl)
 
 ---
 
-#### 6. **设计的优势**
+#### 5. **设计的优势**
 1. **数据一致性强**:通过事务和回滚机制,确保主数据库和二级索引数据库始终保持一致。
 2. **查询高效**:支持基于字段的快速查询,二级索引性能接近主键查询。
 3. **易于扩展**:动态索引创建和删除机制使得系统适应性更强。
@@ -216,7 +209,7 @@ lessCopy code                     主数据库 (DBImpl)
 
 ---
 
-#### 7. **未来优化方向**
+#### 6. **未来优化方向**
 1. **多字段联合索引**:支持对多个字段的联合索引,提高复杂查询的效率。
 2. **异步索引更新**:通过异步任务队列优化索引构建和更新的性能。
 3. **空间优化**:采用压缩技术减少二级索引数据库的存储占用。