从GoogleMap的金字塔模型到无限级索引数据结构(二)
2010-10-21 09:39
246 查看
最初的金字塔模型是分为两个文件进行存储,一个是索引文件,另外一个是纯粹的数据文件,索引文件存储了层级索引,以及图片单元索引,每一个索引的键值从小到大排序。层级索引存储了自身索引值以及图片单元索引在索引文件中的储位置(有点小绕口,那就再看一遍),数据单元索引存储了每个数据单元的索引值以及每一个数据单元在数据文件中的存储位置。
层级索引的元素格式是固定的,索引值从0到24,而图片单元索引的元素个数是不固定的,这种设计很有针对性。为GoogleMap的层级准备25个层级来存储已经是绰绰有余了,而每一个层级中的图片单元个数不固定的原因也很简单:并不是所有区域都有任意等级的图片单元。
如图所示:
这样的具有针对性的数据结构在按顺序写入和查询图片单元上性能得到了最大化,但在需要修改、插入、删除时就显得有些疲惫了。
1.没有一个文件空间的复用机制,导致在频繁的修改过程中,数据文件变得庞大。
2.双文件存储的特点导致在使用时需要打开2个文件句柄,查询到图片单元进行读取的时候增加了磁盘寻道时间,使用的时候也不是很方便。
3.使用文件流进行数据访问,导致在存储数据量大的时候,打开和关闭文件时速度变慢,同时两个程序在修改文件时,很难保证数据完整性。
在了解现有的数据结构和存在的问题之后,我们就可以开始着手修改……
层级索引的元素格式是固定的,索引值从0到24,而图片单元索引的元素个数是不固定的,这种设计很有针对性。为GoogleMap的层级准备25个层级来存储已经是绰绰有余了,而每一个层级中的图片单元个数不固定的原因也很简单:并不是所有区域都有任意等级的图片单元。
如图所示:
这样的具有针对性的数据结构在按顺序写入和查询图片单元上性能得到了最大化,但在需要修改、插入、删除时就显得有些疲惫了。
1.没有一个文件空间的复用机制,导致在频繁的修改过程中,数据文件变得庞大。
2.双文件存储的特点导致在使用时需要打开2个文件句柄,查询到图片单元进行读取的时候增加了磁盘寻道时间,使用的时候也不是很方便。
3.使用文件流进行数据访问,导致在存储数据量大的时候,打开和关闭文件时速度变慢,同时两个程序在修改文件时,很难保证数据完整性。
在了解现有的数据结构和存在的问题之后,我们就可以开始着手修改……
相关文章推荐
- 从GoogleMap的金字塔模型到无限级索引数据结构(四)
- 从GoogleMap的金字塔模型到无限级索引数据结构(一)
- 从GoogleMap的金字塔模型到无限级索引数据结构(三)
- 从GoogleMap的金字塔模型到无限级索引数据结构(一)
- 数据结构设计(表,索引的创建)的说明
- Atitit.软件开发的三层结构isv金字塔模型
- MySql无限分类数据结构--预排序遍历树算法
- 索引基础——B-Tree、B+Tree、红黑树、B*Tree数据结构
- ORACLE 树形结构数据 查询某结点下全部子节点无限递归的前2个数据
- Mysql学习之表结构设计、索引、外键与数据插入
- 使用PowerDesigner将数据库中的表结构转为物理数据模型
- 4. 数据结构进阶四静态查询之索引顺序查询
- 数据模型 三层结构
- Hbase 存储结构 数据模型
- Oracle性能分析5:数据访问方式之索引结构和扫描方式介绍
- 四种数据存储结构---顺序存储 链接存储 索引存储 散列存储
- Atitit.软件开发的三层结构isv金字塔模型
- Linux设备模型基础---数据结构
- 【iOS开发-60】案例学习:多组数据的tableView设置、增加右侧组索引、多层数据模型设置以及valueForKeyPath
- 数据仓库模型的层级结构以及范式建模和维度建模