线性的地址空间 如何存储线性可变数据
这个问题一直困扰着我
我们知道 在操作系统中 文件的存储是线性的,那么如果我要设计一个单文件数据库的文件,要如何设计呢?
如果我们分配一个固定的大小给每一个类型结构 那么如果以后有如果我要修改这个结构中的某个存储的数据,那岂不是要修改整个结构的大小
而如果这个结构是整个数据库文件中的其中一个 那岂不是我要移动修改结构之后的所有数据,那样的工作量未免也太大了吧?
为了更加能够说明问题
我画了一张图 便于大家理解
CSDN把图片压缩过了 品质变得很差,我也不知道 怎么解决 大家将就一下吧
大家一起讨论讨论
看这个问题有没有什么完美的解决方案
------解决方案--------------------"操作系统"中存储文件?是在硬盘上存储吧?线性存储的话,可以采用链表的结构啊,不一定非要在物理结构上也保持连续吧?不知道您是要创建一种新的数据库呢,还是要创建分布式的文件存储系统.关注...
------解决方案--------------------
------解决方案--------------------操作系统里面有介绍。
段式、分页式存储。
------解决方案--------------------既然想“设计一个单文件数据库的文件”,为什么不参考别人的数据库存储管理?这个领域,学术上已经非常成熟,资料和文献也非常的丰富。
比如说微软SQL的页和区体系结构?
http://msdn.microsoft.com/zh-cn/library/cc280360.aspx
------解决方案--------------------
------解决方案--------------------
有数据的磁盘块,例如一个1024为大小的块吧 --> 有数据的磁盘块,例如一个1024K为大小的块吧
例如说我们知道SQL Server的记录最大也不到8K(实际上比8K小几十个字节,显然磁盘块里边需要有管理信息),而Mongo则是16M。后者经过了仔细的测试,证明16M要比8K高效多了(当然也是因为管理方式不同)。
磁盘块里边当然可以有多条记录,而不是只能有一条。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------