使用C++实现一个文件数据库应该了解哪些知识?
巴扎黑
巴扎黑 2017-04-17 11:59:46
0
3
373

如何使用C++实现一个文件型数据库,所有的内容储存在磁盘中,并且能够处理较大的数据,性能较好。

如果需要完成这样的一个系统,需要学习一些什么方面的知识,能不能给一些较为基本的实现?

谢谢!

巴扎黑
巴扎黑

reply all (3)
伊谢尔伦

SQLite源代码

    左手右手慢动作

    1.首先需要数据库的知识,如何实现ACID特性;其中,系统锁是一个重要的点,用的不好性能下降严重;
    2.既然谈到锁,用什么来实现锁可以单独做为一块知识,文件互斥锁、系统信号量等;
    3.索引是个重点,一般数据库用B+树来建立索引,当然,你也可以使用C++ STL内建的容器来装载索引(如map的红黑树)
    4.文件数据库,一般会有内存映射,将文件映射到内存中操作(mmap的实现);如果数据库的管理进程和应用进程是独立的,本地访问,会用到共享内存的知识;基于跨机及通用的方式,会用到网络的知识(TCP、socket通信);
    5.看一些专业数据库的源代码,毕竟自己能想到的前人都做的很完善了,可在前人基础上再提高;参考:sqlite、Berkeley DB等);

      Ty80

      可以参考C实现的SQLite,这里有个不错的SQLite手册,方便了解SQLite实现:
      http://www.cnblogs.com/stephen-liu74/archive/2012/03/09/2328757.html

        Latest Downloads
        More>
        Web Effects
        Website Source Code
        Website Materials
        Front End Template
        About us Disclaimer Sitemap
        php.cn:Public welfare online PHP training,Help PHP learners grow quickly!