引子:GI的自主空间数据库及GIS框架来自于求学时MAPGIS的引导,工作时ARCGIS的追随,读博时IBM和Microsoft2篇文献...。即使在大数据技术发展的今天,自主空间数据库存储仍然有其技术优势,近20年的时间沉淀,是GI平台区别于PETREL等行业基础软件平台、特有的数据集成核心技术。

GI的空间对象建模兼容OpenGIS的简单对象规范定义,但对部分空间对象的内涵和对象间的关系局部做了调整,以满足E&P复杂领域实体的描述以及考虑相关计算几何算法实现时的健壮性与性能考虑。如,复杂空间对象的定义,突破SFS中约定的同构对象复合约定,支持异构对象的复合,即一个空间对象可以由系列点,系列线甚至还包括系列面组成。另外,引进“空”几何对象的定义可以满足某些计算几何算法的计算结果的空对象需求,同时又不破坏整体空间对象在运行时的接口表现:空对象的接口表现就是什么都没有做而已。

GI的空间拓扑关系计算沿用OpenGIS简单对象规范介绍的DE-9IM(扩展9-Intersection Model)模型[4],定义拓扑关系计算涉及的类体系作为空间几何对象类体现的扩展:既不同的拓扑几何对象定义直接关联于空间对象。DE-9IM模型形式化地描述了离散空间对象的拓扑关系,基于DE-9IM模型可以定义空间数据库的一致性原则,并应用于数据库的更新,维护中。

传统关系数据库在管理空间数据时存在诸多缺陷:第一,传统RDBMS管理的是不连续、相关性比较小的数字或字符型数据,而空间数据的存储是连续而且具有很强的空间相关性;第二,传统RDBMS管理的实体类型少,并且它们之间通常只有简单的、固定的关系,而空间对象的坐标串长度不定,是变长记录;第三,传统RDBMS只能操作和查询数据和文本信息,而空间数据库中需要大量的空间操作和查询。

GI通过领域实体的持久化骨架模型定义,在领域实体与其对应的空间对象的建立强制1:1关联,形成完整的领域实体定义基础之上,对空间对象表进行进一步的库表结构设计,包括基于SQL92规范的空间坐标存储,高效索引存储和空间对象版本维护机制。GI借助于不同RDBMS管理下的空间对象的实体表、空间数据表、空间对象索引表和版本表开发空间数据访问引擎:一方面基于不同类型的空间关系计算完成空间数据的查询与分析,另一方面对空间数据的编辑形成有效的版本树管理。

GI针对此网格、四叉树等索引机制,尤其四叉树索引,为每个空间对象存储表的WKB编码字段(空间坐标存储字段)建立对应的空间索引表定义,并在此基础上基于空间对象的空间关系定义(如远离,相交等)建立典型的空间查询流程(得益于IBM DB2及Microsoft SQL Server空间数据库设计思路)。

GI的版本管理。传统RDBMS中采用“锁定-修改-释放”的策略以实现其对多用户并发操作数据库的控制,考虑到空间对象的编辑,有时需要几分钟,但大部分情况下是长时间(如几个月)编辑任务,因此传统事务处理模式不适合空间对象的编辑。GI在领域实体表、空间对象表和空间索引表的骨架表结构基础之上,定义了系列的增表与删表,以满足长时间空间对象编辑的“长事务处理”以及领域实体的时间维的增量信息存储的需求。

GI的持久化版本原型设计由基表和变更表组成:基表对应于领域实体表及其空间对象表,而变更表主要区分删除对象与修改对象的记录,既有对象的状态修改对应于原先记录的删除和修改后新对象的生成。由此可知,基表当前的记录与变更表中的记录在约定版本号下定义了当前版本所有领域实体记录。

对应到对象 数据库驼峰_【GI的自主空间数据库】一种竞争力,叫技术引领;一种竞争力,叫时间沉淀...相关推荐

  1. 对应到对象 数据库驼峰_驼峰

    一.前言 需要知道的是,在Java开发中,实体一般采取陀骆峰的形式命名,而数据库表设计,会采取下划线的方式.数据库大小写是否敏感的问题与系统有关.通常认为Linux环境下,大小写是敏感的,Window ...

  2. 对应到对象 数据库驼峰_从源码角度理解Mybatis字段映射(一) - 驼峰式命名

    凯伦说,公众号ID: KailunTalk,努力写出最优质的技术文章,欢迎关注探讨. 在上篇博客-[JDBC] 处理ResultSet,构建Java对象中提到,我们需要分析Mybatis在转换Resu ...

  3. 对应到对象 数据库驼峰_SpringJPA底层DAO查询的写法归类总结

    如果你要使用JPA就行底层操作,那么会涉及到很多查询的代码编写,虽然JPA屏蔽了复杂代码的编写,但是还是需要我们根据业务逻辑来编写一些额外的接口代码. 这里就来归纳总结下一些查询写法的编码示例. HQ ...

  4. db4o_8.0对象数据库官方文档翻译_学习笔记三

    紧接上篇:db4o_8.0对象数据库官方文档翻译_学习笔记二 3. Object Manager Enterprise Overview(OME视图)即OME插件的使用 If you did not  ...

  5. 为什么不用小驼峰也能查到数据库数据_为什么不用驼峰命名创建表名和字段?...

    例如: user : userId nickName .. userInfo : userAvatar 补充问题: 现在编程已经不是很多年前那样,你一套系统也不用跟人家交互. 以做接口为例,驼峰命名据 ...

  6. 数据库综合设计java_JAVA程序综合设计数据库设计_

    JAVA程序综合设计数据库设计_ 北华大学开放实验报告实验项目名称: JAVA 程序综合设计(数据库设计)所属课程名称: 面对象程序设计--JAVA 实 验 类 型: 设 计 型 班 级: 信 息 1 ...

  7. 阿里mysql数据库同步_如何对MySQL数据库中的数据进行实时同步-阿里云开发者社区...

    数据传输(Data Transmission) 支持以数据库为核心的结构化存储产品之间的数据传输. 它是一种集数据迁移.数据订阅及数据实时同步于一体的数据传输服务.数据传输致力于在公有云.混合云场景下 ...

  8. 发现数据对象 -- 数据库开发的关键

    发现数据对象 -- 数据库开发的关键   不管你是开发简单的数据库系统,还是复杂的系统甚至是做数据仓库,选用Sybase或Oracle,乃至简单的用Access或Foxpro,只要是关系型数据库都难免 ...

  9. 多个线程访问统一对象的不同方法_不会多线程还想进BAT?精选19道多线程面试题,有答案边看边学...

    一. Java程序如何停止一个线程? 建议使用"异常法"来终止线程的继续运行.在想要被中断执行的线程中, 调用 interrupted()方法,该方法用来检验当前线程是否已经被中断 ...

最新文章

  1. java对象转json字符串日期格式_Gson转Json字符串时将日期类型转换成Long型的方法...
  2. Webview离线功能(优先cache缓存+cache缓存管理)
  3. spring aop 如何切面到mvc 的controller--转载
  4. 安装 groovy eclipse 插件
  5. Oracle PL/SQL入门
  6. JavaBean在jsp中的使用
  7. 重磅!华为方舟编译器招募 2000 程序员!
  8. 翻山越岭上uvaoj
  9. ov7740摄像头模块
  10. 线性分类器定义和局限性
  11. java 修改pdf_使用Java编辑PDF文本
  12. 创业公司的融资阶段:天使轮、种子轮、A轮、C轮、E轮到底是什么意思?
  13. vue中进度条写法_Vue进度条progressbar组件功能
  14. java win10窗口启动假死_win10底部任务栏卡死无响应解决
  15. Linux-Qt--2--调试运行终止弹窗问题-The inferior stopped because it received a signal from the Operating System
  16. Java分布式中文分词组件 - word分词(转自 https //github com/ysc/word)
  17. 人在旅途——》张家界之旅:20190420
  18. 2020年Top 100开发者工具列表汇总
  19. vs2010 无法启动程序 系统找不到指定的文件
  20. 软件战场加速剧变!诚迈科技成为Elektrobit中国区增值代理经销商

热门文章

  1. Blender制作3D模型导出到UE5完整学习教程
  2. 学习编写Unity计算着色器 Learn to Write Unity Compute Shaders
  3. Go 分布式学习利器(6)-- Map
  4. 洛谷P4480 【[BJWC2018]餐巾计划问题】
  5. nRF51800 蓝牙学习 进程记录 2:关于二维数组 执念执战
  6. 报表性能优化方案之报表服务器优化基础讲解
  7. 控件的实际大小与呈现大小
  8. WSDL、SOAP、UDDI
  9. PHP安装parsekit扩展查看opcode
  10. 在分页状态下删除纪录的问题