一种简单的数据存储设计
2013-04-23 14:15
260 查看
一.设计目的
在xx项目中,需要载入多张表并对表做关联,然后后面查询使用。但是由于每次系统启动时候都要加载多张表本分析表的关系,所以在每次系统启动的时候,都要卡一下,并且有时候表很大,而分配给系统的内存又有限。为了解决上诉等问题,设计了一种方法,就是索引加数据库方法,下面是索引的基本设计(数据库不是我做的,数据库主要使用了文件映射技术来解决内存压力)。
注:本文数据库指数据的集合,只包含数据。
二.构成
(1)FileHandler类。该类对索引文件做控制。类由自己创建,在第一次初始化数据库之后,执行一次写索引,将索引内容写出到文件。以后每次启动都通过读索引来加载。
(2)Info类。这是一个简化,实际Info类做了多层嵌套(数据的索引层次太多了)。Info类保存了本级的id值和内部数据(可能是个map,或者vector之类)。
(3)IndexBuilder类。这个类负责在初始化的时候,反复从数据库取得索引信息,并将索引信息记录进map。
(4)Index类。这个类读取所以呢的文件,并提供查询方法。
三.实现
在xx项目中,需要载入多张表并对表做关联,然后后面查询使用。但是由于每次系统启动时候都要加载多张表本分析表的关系,所以在每次系统启动的时候,都要卡一下,并且有时候表很大,而分配给系统的内存又有限。为了解决上诉等问题,设计了一种方法,就是索引加数据库方法,下面是索引的基本设计(数据库不是我做的,数据库主要使用了文件映射技术来解决内存压力)。
注:本文数据库指数据的集合,只包含数据。
二.构成
(1)FileHandler类。该类对索引文件做控制。类由自己创建,在第一次初始化数据库之后,执行一次写索引,将索引内容写出到文件。以后每次启动都通过读索引来加载。
(2)Info类。这是一个简化,实际Info类做了多层嵌套(数据的索引层次太多了)。Info类保存了本级的id值和内部数据(可能是个map,或者vector之类)。
(3)IndexBuilder类。这个类负责在初始化的时候,反复从数据库取得索引信息,并将索引信息记录进map。
(4)Index类。这个类读取所以呢的文件,并提供查询方法。
三.实现
typedef vector<size_t> Container; class FileHandler{ private: FileHandler(); public: auto_ptr<FileHandler> createFileHandler(); void writeOneKey(const char*); void writeOneVal(const char*); void writeValList(const Container&); char readOneKey(); char readOneVal(); void readValList(size_t, Container&); private: FILE* key; FILE* val; }; class Info{ public: Info(size_t); private: NONE_COPY_AND_ASSIGN(Info); public: void addIndexInfo(const IndexInfo&); void getIndexInfo(IndexInfo&); void saveToFile(); void loadFromFile(); size_t getId(); private: size_t id; Container contain; }; class IndexBuilder{ public: IndexBuilder(const PARAM&); private: NONE_COPY_AND_ASSIGN(IndexBuilder); public: void addIndex(const Index&); void saveToFile(); private: map<size_t, Info> infos; FileHandler* files; }; class Index{ public: Index(const string&); private: NONE_COPY_AND_ASSIGN(Index); public: void getIndex(size_t, Index&); void loadFromFile(); private: map<size_t, Info> infos; FileHandler* files; }
相关文章推荐
- SharedPreferences是一种用来存储简单的数据的一个工具类,也就是简单数据的持久化
- Android 数据存储的一种最简单的方式 SharedPreferences
- 一种简单的存储和可视化IoT传感器数据的方法---凯利讯半导体
- VB6数据导出到Excel文件,一种设计界面查询条件的方法,一种简单加密方法(改写)
- 一种NVMe SSD友好的数据存储系统设计 推荐
- 数据存储在多张表,缓存维度简单设计
- 数据结构课程设计之银行活期存储系统(设计报告)
- 树形结构的数据存储与数据库表设计
- Python基础(7)——名片管理系统(实现了数据简单的存储、修改、删除、查看等)
- cocos2d-x 之 简单数据存储——Userdefault
- React-Native 数据存储之react-native-storage的简单使用
- 架构设计:系统存储(10)——MySQL简单主从方案及暴露的问题
- 浅析ShardPreferences简单数据存储
- 设计海量key-value数据的存储查询模块
- 线性表是最基本、最简单、也是最常用的一种数据结构。
- android SharedPreferences 简单的数据存储
- 专家讲解 Hadoop:HBASE松散数据存储设计
- Java技术_每天掌握一种设计模式(006)_使用场景及简单实例(创建型:原型模式)
- c的简单数据组存储
- 简单的数据存储--Preferences的使用