使用C++实现一个文件数据库应该了解哪些知识?
如何使用C++实现一个文件型数据库,所有的内容储存在磁盘中,并且能够处理较大的数据,性能较好。
如果需要完成这样的一个系统,需要学习一些什么方面的知识,能不能给一些较为基本的实现?
谢谢!
背叛D双子
9 years, 4 months ago
Answers
可以参考C实现的SQLite,这里有个不错的SQLite手册,方便了解SQLite实现:
http://www.cnblogs.com/stephen-liu74/archive/2012/03/09/2328757.html
欧洲第一帅
answered 9 years, 4 months ago
1.首先需要数据库的知识,如何实现ACID特性;其中,系统锁是一个重要的点,用的不好性能下降严重;
2.既然谈到锁,用什么来实现锁可以单独做为一块知识,文件互斥锁、系统信号量等;
3.索引是个重点,一般数据库用B+树来建立索引,当然,你也可以使用C++ STL内建的容器来装载索引(如map的红黑树)
4.文件数据库,一般会有内存映射,将文件映射到内存中操作(mmap的实现);如果数据库的管理进程和应用进程是独立的,本地访问,会用到共享内存的知识;基于跨机及通用的方式,会用到网络的知识(TCP、socket通信);
5.看一些专业数据库的源代码,毕竟自己能想到的前人都做的很完善了,可在前人基础上再提高;参考:sqlite、Berkeley DB等);
KonaYu
answered 9 years, 4 months ago