关键词:Java 2平台企业版;元数据管理;扩展标记语言�
随着信息技术的发展,产生了海量的信息。如何有效地管理和组织这些海量信息已经成为一个突出的问题。元数据机制是解决这一问题的有效手段。一些部门已经针对数据在行业内部的应用特点来开发自己的管理系统[1]。目前,在元数据管理系统的建设中存在的主要问题是:基于不同 *** 作系统和数据库的管理平台不可移植、安全性差、难以维护和扩展、缺乏统一的建设模式与内容服务提供方式[2,3]。�
以J2EE平台为基础的各项技术的成熟为这些问题提供了良好的解决方案。J2EE是一种利用Java2平台来简化诸多与多级解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE的核心技术是Java2平台的标准版,具有Java语言的特性,是一个开放的、跨平台的结构,提供了健全的意外事件处理机制,具有良好的可移植性和扩展性。�
基于J2EE的元数据管理系统具有高效、稳定、可复用、易维护的特点;独立于平台,可以部署于Microsoft Windows、Linux、UNIX等 *** 作系统之上;可对Oracle、SQL Server 2000、MySQL等多种数据库进行 *** 作。但是J2EE涉及的技术种类繁多,在实际应用中要根据需要准确使用,而且基于J2EE的系统需要具有良好的系统设计结构,才能最大限度地发挥优势。尽管基于J2EE平台的系统具有诸多优点,但目前J2EE还没有被广泛应用在元数据管理中。本文提出的基于J2EE架构的元数据管理系统建设方法和应用实例,是将J2EE引入元数据管理的一个初步尝试。�
1关键技术研究�
1.1基于XML的多源异构数据融合�
各个部门采用了不同的元数据存储方式。由于缺乏统一的标准,很难对这些元数据进行有效的管理和发布。必须实现多源异构数据的融合。�
采用简单文本文件作为中间介质的信息交换方法不能描述数据的结构,不适合用来进行复杂的元数据交换。 XML技术实现信息交换与共享已经成为一种发展趋势。孙君明等人[4]对基于XML的数据交换技术进行了研究。XML是采用线性语法描述树状结构的标志语言。作为一种数据交换的中间件,XML具有跨平台、结构化和自描述性强的特点。�
用XML实现多源异构数据融合的过程如图1所示。�
在图1中,首先各地的数据提供者通过浏览器将数据传送给服务器,由服务器端的XML引擎将这些数据转换成标准的XML文档;再由一些服务组件根据需要对XML文档进行处理,如建立索引等。这样,多源异构数据就被转换成了具有统一标准的XML文档;通过对这样具有固定结构的XML中间件的解析,实现从XML文档到数据库的转换,完成了多源异构数据的统一存储[4,5]。进行信息发布时,根据客户端的查询条件在数据库中提取相应的结果集,形成XML文档,将该文档发送至客户端;由客户端的格式化工具解析该XML文档,显示在客户端。�
1.2遥感数据的分块存储�
遥感数据(如DEM、TM、ASTER等)具有数据量庞大的特点,应用数据库中的大数据类型存储,如Oracle 9i中的Blob、SQL Server 2000中的Image。但是如果将它们直接存入数据库中会造成系统效率低下可采用一种分块存储的策略,将原始数据分割成大小一致的若干块,一块一块地进行存储。分块大小要根据磁盘的读写性能和网络的传输性能确定,过大或过小都会导致系统运行效率低下[6]。每块数据以一条记录的方式进行存储,包含数据的编号、经纬度、步长、时间等信息,并且建立索引。�
1.3数据持久化�
为了能使系统部署在任意数据库系统上,加入了一个持久化层,作为连接Java应用和关系数据库的通道。为数据库中的每张表建立一个Java对象,定义好对象与表之间的对应关系,只需对Java对象进行 *** 作,不用关心SQL语句和系统最终使用的数据库。持久层作为一个中间件,封装对数据库的 *** 作,提供接口,隐藏数据访问的细节[7]。�
1.4用户访问控制�
元数据的使用人员级别复杂,用户管理困难。使用RBAC(Role-Based Access Control,基于角色的访问控制)模型,可以提高管理的效率和安全性。RBAC在传统的用户——权限模型中引入了角色的概念。角色是一组用户的集合,也是一个授权的集合,它将一组用户与权限联系起来。一个角色可以与多个用户对应,一个用户可以拥有多个角色,每个角色可以执行多种权限,每个权限可以被多个角色共享。对一个用户授予相应的角色,使用户可以进行相应的 *** 作[8]。引入角色可以使系统的安全机制具有很大的灵活性,减少了权限管理的负担和代价,同时也增强了系统的可维护性。�
2元数据管理系统的设计�
使用本系统的各部门实际情况不同,系统可能被部署到不同的平台上,而且需要对该系统进行一定的扩展和改进。所以在系统设计上,需要充分考虑到系统的可移植性和可扩展性。�
2.1系统设计�
本系统基于J2EE平台,是一个浏览器/服务器(B/S)结构的系统,具有J2EE平台可以跨系统使用的特性,采用MVC(Model-View-Controller)应用框架。MVC设计框架的内部原理比较复杂,将MVC运用到应用程序中会带来大量的额外工作,增加应用的复杂性。但是MVC可以轻松地实现程序代码与HTML的分离,而且MVC的三个模块相互独立,可以构造良好的松耦合构件,提高应用系统的可维护性、可扩展性、可移植性和可复用性。从长远的应用考虑,应使用MVC设计框架[9]。�
本系统在传统的B/S三层结构上作了一定的改进。�
(1)表现层。在该层使用Struts框架。Struts是一个MVC模式的表现层应用框架。浏览器向Web服务器提出请求后,Web服务器会把请求交给控制器处理。ActionServlet控制器根据请求的不同,将它们转发给不同的Action实例。Action实例在这里充当了用户请求与业务处理逻辑之间的适配器,它只负责控制整个程序的流程,不关心具体业务的实现,实现了请求与业务逻辑的分开。本系统使用一个高效的Action类——DispatchAction类。只要继承该类,就可以在一个Action中集成多个业务方法,有利于系统的维护。在视图显示方面,其大量使用了Struts标签,用来控制显示的逻辑和内容。由于不同平台采取的编码方式不同,在进行系统移植时很容易出现中文乱码问题。在这里使用一个可插拔式的过滤器,实现对请求和响应的预处理及后处理,很好地解决了字符编码问题,使系统可以在不同的平台上进行移植。
(2)业务层。它处理用户请求和应用逻辑。在处理之前,将所有涉及到表现层的数据结构替换成更加通用的数据结构类型;使用通用的、与表现层无关的数据结构在这两层之间传递参数。表现层方法提交的参数类型主要是HttpServletRequest和HttpServletResponse;使用这样的参数会增加系统的耦合性,不利于代码的重用,所以要将它们处理成通用的数据类型,如数组。这一过程在Action适配器进行转发之前完成,提供给业务层的参数是通用的数据类型[10]。业务层方法之间的通信也通过通用的参数类型进行,使得每个业务方法均独立存在于系统之中,在很大程度上减少了系统的耦合,提高了可复用性。�
(3)数据层。为了实现数据库访问细节与业务层的分离,引入持久化层。�
为了使系统具有较好的可维护性、可移植性和可复用性,采用以上的设计思想,以搭建一个逻辑清楚、功能明确、模块化程度高的元数据管理系统。�
2.2工作流程�
用户通过浏览器(IE/Netscape)向服务器提交请求,请求经过过滤器处理后再提交给控制器ActionServlet;控制器根据请求的类别将它们转发给不同的DispatchAction类。该类中的方法对参数进行处理后调用不同的业务逻辑对请求进行分析处理,处理后得到的信息通过视图显示在用户浏览器上。�
3基于J2EE的元数据管理系统的实现�
根据本文提出的设计思想,实现了一个元数据管理系统——基于J2EE的小城镇元数据管理平台。本实例以J2EE平台为基础,Tomcat 5.0为服务器,可以使用Oracle 9i、SQL Server 2000、MySQL数据库,使用了ORM(Object-Relation Mapping)模式的持久化层中间件Hibernate,以Eclipse 3.0为开发平台。在系统实现过程中,使用了以J2EE平台为基础的各项技术,遵循Java2标准平台的编码标准,注重系统的可扩展性和可维护性。系统的XML引擎采用了DOM(Document Object Model)和SAX(Simple API for XML)。DOM负责XML文档的生成和修改;SAX对XML进行解析。
小城镇元数据管理平台的功能主要分为管理与检索两部分,可以实现对矢量数据、栅格数据、文档数据、原始试验数据、报表数据和模型数据的管理与检索;用户管理可以对用户进行权限设置;系统管理功能可以提供系统运行的日志和帮助文件。�
4结束语�
基于J2EE的元数据管理平台,具有良好的跨平台特性;解决了多源异构数据的融合、遥感数据的存储、数据持久化和用户控制访问问题;在设计和实现过程中遵循J2EE的设计模式,具有良好的扩展性和维护性;功能模块具有低耦合的特点,极大地提高了代码的可复用性;可对元数据进行有效管理,实现信息的共享发布,广泛地应用在各个领域。在如何提高系统的安全性方面还有待于对其进行进一步的研究。�
参考文献:�
〔1〕吴洪桥,何建邦,池天河,等.基于Internet的元数据管理模式研究[J].计算机科学,2003,30(4):89-91. [2]李广乾 .小城镇信息化建设的基本思路[J].信息化建设,2005(Z1):24-26.�
[3]赵春江,杨信廷. 加强信息技术研究和开发促进小城镇健康发展[J].小城镇建设,2005(1):22-23.�
[4]孙君明,郭红. 基于XML的异构信息交换技术研究[J].计算机应用研究,2003,20(1):70-72.�
[5]李德冠,陈梦东. 一种基于XML的数据交换系统的设计和实现[J].微机发展,2005,15(12):12-14.�
[6]朱雷,潘懋,李丽勤,等. GIS中海量栅格数据的处理技术研究[J].计算机应用研究,2006,23(1):66-68.�
[7]孙卫琴. 精通Hibernate:Java对象持久化技术详解[M]. 北京:电子工业出版社,2005.�
[8]范会联,李献礼. 基于Struts框架的Web信息系统中RBAC的实现[J].计算机时代,2005(12):33-34.�
[9]孙卫琴. 基于MVC的Java Web设计与开发[M]. 北京:电子工业出版社,2004.
事实表明,低代码和无代码开发平台允许开发人员比传统编程速度更快、成本更低地开发应用程序。而人们需要了解如何为工作选择正确的低代码或无代码工具。如今的低代码和无代码开发平台使软件开发人员团队(甚至非编程人员)能够交付、支持和扩展广泛的应用程序。它们用于构建移动应用程序、提高客户体验、简化工作流程、使遗留应用程序实现现代化、数据集成自动化,以及支持数据可视化,这些都是一些常见的用途。以JNPF快速开发平台为例:
低代码和无代码开发工具的主要特点是它们可以被开发人员成功使用他们可以比使用原生SDK更快地开发应用程序并且可以用更少的费用开发应用程序。虽然许多低代码和无代码开发平台需要收取许可费或订阅费用,但也让开发人员节省人工成本。
平台亮点
工作流程引擎:支持一站式开发、多端使用,需求发生变化只需调整业务服务流程或修改 *** 作即可;
灵活的权限控制:授权机制符号RBAC,限能控制到菜单、按钮、数据列与约束条件,授权范围等;
低代码开发:将产品开发中重复繁琐的步骤抽提出来,生成代码可下载拷贝应用,可根据需求个性化修改、使开发更简单、更快速;
零代码开发:配备大量可复用控件,通过 *** 作界面元素,拖拽控件自动生成可视化应用;
大屏设计:自由布局页面,拖拽控件至页面中,针对不同的控件进行内容设值和数据绑定,所见即所得的实现大屏可视化页面开发
门户设计:企业快速通过简单拖拽组件到画布上进行配置和部署设计个性化的门户;
丰富的图表设计:支持单表和多表、各种图形展示,轻松实现企业数据化分析和决策运营管理;
一站式生成APP应用:可以轻松搭建出IOS和Android系统的移动端应用,实现各类功能一站聚合、多端接入,实现前端对接后台数据的 *** 作,可以快速获取前台传到后台数据;
IM通讯:IM系统同时兼容PC端、手机客户端App、微信小程序等多种平台,PC端+移动端伴您解决企业工作后顾之忧;
支持多种数据库:支持MySQL、SQL Server、Oracle、PostgreSQL、达梦数据库、人大金仓数据库等,您无需关心不同类型数据库间的语法区别
支持二次开发:丰富的现成应用,满足企业不断变化的业务、管理需求,基于平台开发的产品更稳定可靠、代码规范、易学上手快等,可全方位实现商业拓展
快速搭建Saas服务:企业快速维度落地拓展、随时随地搭建Saas平台服务,开发者只需关心业务和创新。
TiDB 是 PingCAP 自主研发的开源分布式关系型数据库,具备商业级数据库的数据可靠性,可用性,安全性等特性,支持在线d性水平扩展,兼容 MySQL 协议及生态,创新性实现 OLTP 及 OLAP 融合。
TiDB 3.0 版本显著提升了大规模集群的稳定性,集群支持 150+ 存储节点,300+TB 存储容量长期稳定运行。易用性方面引入大量降低用户运维成本的优化,包括引入 Information_Schema 中的多个实用系统视图、EXPLAIN ANALYZE、SQL Trace 等。在性能方面,特别是 OLTP 性能方面,3.0 比 2.1 也有大幅提升,其中 TPC-C 性能提升约 4.5 倍,Sysbench 性能提升约 1.5 倍,OLAP 方面,TPC-H 50G Q15 因实现 View 可以执行,至此 TPC-H 22 个 Query 均可正常运行。新功能方面增加了窗口函数、视图(实验特性)、分区表、插件系统、悲观锁(实验特性)。
截止本文发稿时 TiDB 已在 500+ 用户的生产环境中长期稳定运行,涵盖金融、保险、制造,互联网, 游戏 等领域,涉及交易、数据中台、 历史 库等多个业务场景。不同业务场景对关系型数据库的诉求可用 “百花齐放”来形容,但对关系数据库最根本的诉求未发生任何变化,如数据可靠性,系统稳定性,可扩展性,安全性,易用性等。请跟随我们的脚步梳理 TiDB 3.0 有什么样的惊喜。
3.0 与 2.1 版本相比,显著提升了大规模集群的稳定性,支持单集群 150+ 存储节点,300+TB 存储容量长期稳定运行,主要的优化点如下:
1. 优化 Raft 副本之间的心跳机制,按照 Region 的活跃程度调整心跳频率,减小冷数据对集群的负担。
2. 热点调度策略支持更多参数配置,采用更高优先级,并提升热点调度的准确性。
3. 优化 PD 调度流程,提供调度限流机制,提升系统稳定性。
4. 新增分布式 GC 功能,提升 GC 的性能,降低大集群 GC 时间,提升系统稳定性。
众所周知,数据库查询计划的稳定性对业务至关重要,TiDB 3.0 版本采用多种优化手段提升查询计划的稳定性,如下:
1. 新增 Fast Analyze 功能,提升收集统计信息的速度,降低集群资源的消耗及对业务的影响。
2. 新增 Incremental Analyze 功能,提升收集单调递增的索引统计信息的速度,降低集群资源的消耗及对业务的影响。
3. 在 CM-Sketch 中新增 TopN 的统计信息,缓解 CM-Sketch 哈希冲突导致估算偏大,提升代价估算的准确性,提升查询计划的稳定性。
4. 引入 Skyline Pruning 框架,利用规则防止查询计划过度依赖统计信息,缓解因统计信息滞后导致选择的查询计划不是最优的情况,提升查询计划的稳定性。
5. 新增 SQL Plan Management 功能,支持在查询计划不准确时手动绑定查询计划,提升查询计划的稳定性。
1. OLTP
3.0 与 2.1 版本相比 Sysbench 的 Point Select,Update Index,Update Non-Index 均提升约 1.5 倍,TPC-C 性能提升约 4.5 倍。主要的优化点如下:
1. TiDB 持续优化 SQL 执行器,包括:优化 NOT EXISTS 子查询转化为 Anti Semi Join,优化多表 Join 时 Join 顺序选择等。
2. 优化 Index Join 逻辑,扩大 Index Join 算子的适用场景并提升代价估算的准确性。
3. TiKV 批量接收和发送消息功能,提升写入密集的场景的 TPS 约 7%,读密集的场景提升约 30%。
4. TiKV 优化内存管理,减少 Iterator Key Bound Option 的内存分配和拷贝,多个 Column Families 共享 block cache 提升 cache 命中率等手段大幅提升性能。
5. 引入 Titan 存储引擎插件,提升 Value 值超过 1KB 时性能,缓解 RocksDB 写放大问题,减少磁盘 IO 的占用。
6. TiKV 新增多线程 Raftstore 和 Apply 功能,提升单节点内可扩展性,进而提升单节点内并发处理能力和资源利用率,降低延时,大幅提升集群写入能力。
TiDB Lightning 性能与 2019 年年初相比提升 3 倍,从 100GB/h 提升到 300GB/h,即 28MB/s 提升到 85MB/s,优化点,如下:
1. 提升 SQL 转化成 KV Pairs 的性能,减少不必要的开销。
2. 提升单表导入性能,单表支持批量导入。
3. 提升 TiKV-Importer 导入数据性能,支持将数据和索引分别导入。
4. TiKV-Importer 支持上传 SST 文件限速功能。
RBAC(Role-Based Access Control,基于角色的权限访问控制) 是商业系统中最常见的权限管理技术之一,通过 RBAC 思想可以构建最简单“用户-角色-权限”的访问权限控制模型。RBAC 中用户与角色关联,权限与角色关联,角色与权限之间一般是多对多的关系,用户通过成为什么样的角色获取该角色所拥有的权限,达到简化权限管理的目的,通过此版本的迭代 RBAC 功能开发完成。
IP 白名单功能(企业版特性) :TiDB 提供基于 IP 白名单实现网络安全访问控制,用户可根据实际情况配置相关的访问策略。
Audit log 功能(企业版特性) :Audit log 记录用户对数据库所执行的 *** 作,通过记录 Audit log 用户可以对数据库进行故障分析,行为分析,安全审计等,帮助用户获取数据执行情况。
加密存储(企业版特性) :TiDB 利用 RocksDB 自身加密功能,实现加密存储的功能,保证所有写入到磁盘的数据都经过加密,降低数据泄露的风险。
完善权限语句的权限检查 ,新增 ANALYZE,USE,SET GLOBAL,SHOW PROCESSLIST 语句权限检查。
1. 新增 SQL 方式查询慢查询,丰富 TiDB 慢查询日志内容,如:Coprocessor 任务数,平均/最长/90% 执行/等待时间,执行/等待时间最长的 TiKV 地址,简化慢查询定位工作,提高排查慢查询问题效率,提升产品易用性。
2. 新增系统配置项合法性检查,优化系统监控项等,提升产品易用性。
3. 新增对 TableReader、IndexReader 和 IndexLookupReader 算子内存使用情况统计信息,提高 Query 内存使用统计的准确性,提升处理内存消耗较大语句的效率。
4. 制定日志规范,重构日志系统,统一日志格式,方便用户理解日志内容,有助于通过工具对日志进行定量分析。
5. 新增 EXPLAIN ANALYZE 功能,提升SQL 调优的易用性。
6. 新增 SQL 语句 Trace 功能,方便排查问题。
7. 新增通过 unix_socket 方式连接数据库。
8. 新增快速恢复被删除表功能,当误删除数据时可通过此功能快速恢复数据。
TiDB 3.0 新增 TiFlash 组件,解决复杂分析及 HTAP 场景。TiFlash 是列式存储系统,与行存储系统实时同步,具备低延时,高性能,事务一致性读等特性。 通过 Raft 协议从 TiKV 中实时同步行存数据并转化成列存储格式持久化到一组独立的节点,解决行列混合存储以及资源隔离性问题。TiFlash 可用作行存储系统(TiKV)实时镜像,实时镜像可独立于行存储系统,将行存储及列存储从物理隔离开,提供完善的资源隔离方案,HTAP 场景最优推荐方案;亦可用作行存储表的索引,配合行存储对外提供智能的 OLAP 服务,提升约 10 倍复杂的混合查询的性能。
TiFlash 目前处于 Beta 阶段,计划 2019 年 12 月 31 日之前 GA,欢迎大家申请试用。
未来我们会继续投入到系统稳定性,易用性,性能,d性扩展方面,向用户提供极致的d性伸缩能力,极致的性能体验,极致的用户体验。
稳定性方面 V4.0 版本将继续完善 V3.0 未 GA 的重大特性,例如:悲观事务模型,View,Table Partition,Titan 行存储引擎,TiFlash 列存储引擎;引入近似物理备份恢复解决分布数据库备份恢复难题;优化 PD 调度功能等。
性能方面 V4.0 版本将继续优化事务处理流程,减少事务资源消耗,提升性能,例如:1PC,省去获取 commit ts *** 作等。
d性扩展方面,PD 将提供d性扩展所需的元信息供外部系统调用,外部系统可根据元信息及负载情况动态伸缩集群规模,达成节省成本的目标。
我们相信战胜“未知”最好的武器就是社区的力量,基础软件需要坚定地走开源路线。截止发稿我们已经完成 41 篇源码阅读文章。TiDB 开源社区总计 265 位 Contributor,6 位 Committer,在这里我们对社区贡献者表示由衷的感谢,希望更多志同道合的人能加入进来,也希望大家在 TiDB 这个开源社区能够有所收获。
TiDB 3.0 GA Release Notes: https://pingcap.com/docs-cn/v3.0/releases/3.0-ga/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)