数据虚拟化

术语

数据虚拟化(data virtualization)是用来描述所有数据管理方法的涵盖性术语,这些方法允许应用程序检索并管理数据,且不需要数据相关的技术细节,例如它格式化的方式或物理位置所在。

定义
数据虚拟化(Data virtualization)– 数据整合的过程,以此获得更多的数据信息,这个过程通常会引入其他技术,例如数据库应用程序,文件系统,网页技术,大数据技术等等。
数据虚拟化概念图如图1所示。
如果你在Facebook之类的社交网站存储照片,你也许会对数据虚拟化(data virtualization)的概念很熟悉。当你从桌面电脑上传照片到Facebook时,你必须告诉上传工具这些照片的位置信息—照片的文件路径。但是一旦它们已经上传到Facebook,你不需要知道新的文件路径就能检索该照片。事实上,你绝对不会知道Facebook将你的照片存放在哪里,因为Facebook软件有一个抽象层来隐藏技术性信息。这个抽象层对于某些厂商来说,就是他们口中的数据虚拟化所指。
数据虚拟化(data virtualization)这个词可能有点令人困惑,因为有些厂商互换地使用数据虚拟化和数据联合(data federation)。但是两者之间确实有些许不同。数据联合技术的目的是从不同来源收集异构(heterogeneous)数据并以单点访问的方式来访问它。然而数据虚拟化一词仅仅代表有关数据的技术性信息已经隐藏了。严格说来,这并不意味着数据是异构的或者可以通过单点访问查看。
系统架构
从用户应用的角度出发,我们认为数据虚拟化系统架构应该包含3层:应用层、数据虚拟化层和源数据层。其中,数据虚拟化层包括数据虚拟化平面和管理平面,二者相互结合执行全方位的查询、处理、集成和管理功能。数据虚拟化系统架构如图2所示。
应用层
应用层主要是面向前端各种各样的数据查询访问应用,将用户的查询请求传递到数据虚拟化层。系统为数据消费者的查询请求提供多种访问接口,用于访问数据虚拟化系统,如某些数据消费者可以用JDBC/SQL接口访问,另一些数据消费者可以采用MDX(multi-dimensionalexpressions)接口或基于SOAP(simple object access protocol)接口访问相同的数据服务,对数据消费者而言可以根据自己确定的访问方式发起查询请求。
数据虚拟化层
数据虚拟化层是整个数据虚拟化系统的核心,包括2个平面:数据虚拟化平面和管理平面。其中,数据虚拟化平面包含4个层次的内容,完成数据的抽象、元数据建模、数据源映射、查询驱动与响应等功能;管理平面进行系统配置、管理、监测、安全、数据检查与维护等工作。下面对数据虚拟化平面及管理平面分别进行介绍。
数据虚拟化平面
总结来说,当用户发起一个查询请求,查询引擎确定查询策略并进行查询结果计算、优化及结果响应。若数据服务层没有预先定义该查询对应的虚拟表,则元数据组织层需根据系统存储的元数据信息对查询所需的相关元数据进行组织,生成对应的临时虚拟表。数据映射层实施相应虚拟表与封装表的映射,进而访问底层数据源。
管理平面
管理平面的目标是通过配置、监测、管理控制等手段支撑整个虚拟化系统的安全、可靠、高效运行。通过对数据虚拟化系统的配置,完成生产、备份、故障切换等任务。数据虚拟化平台中的整合管理工具支持软件供应,对源数据访问的授权,与LDAP(light weight directory access protocol)的整合以及其他安全工具等。系统管理工具管理服务器会话、数据服务、元数据等。
针对数据虚拟化平面的4个层次,管理平面也要完成对应的管理功能。对于数据映射层而言,要实现每个应用所需数据的映射,管理层必须实现对封装表、源数据、源数据间关系的管理;在元数据组织层,管理环境要实施对元数据的清洗、一致性检测等任务,保证元数据缓存的高效性;在数据服务层,管理环境要完成对虚拟表或数据服务组合、更新过程的维护等,部署管理器完成对数据服务的扩展部署,确保其持续可用;针对查询响应层,控制器、监测器、管理器等共同作用保证整个查询过程的正确实施。
源数据层
源数据层针对各个数据所有者提供的多源异构数据源进行统一的接口管理,实现数据虚拟化系统中各种不同数据源的访问细节对用户进行屏蔽。通过ODBC/JDBC,JSON,API等接口,实现源数据的获取和传输,最终完成用户所需数据资源的交付。
特别注意:源数据层只是对各种物理数据源的访问接口管理,并不需要了解具体的物理源数据的组织、存储及管理方式;物理数据源由所有者管理,并根据自身策略来开放全部或部分源数据的视图给数据虚拟化系统。
研究问题
一个完整的数据虚拟化系统应具备创建视图/虚拟表、提供数据服务、优化联合查询、数据缓存、以及细粒度的安全性等能力,使用户在不同数据源中发现数据、检索与访问数据。虽然数据虚拟化会在很大程度上能够提高数据集成的灵活性和敏捷性,如用户通过单一接入点访问不同数据源的数据、数据服务面向所有的数据消费者、避免数据物理转移、提高数据使用率等,但是仍然存在一些问题与挑战需要研究解决。
异构数据源的集成
不同数据源的数据可能采用不同结构的数据,包括结构化、半结构化与混合结构数据。如有的数据集采用关系数据模式,有的采用HTML/XML文件,有的采用日志格式文件等。这些异构的数据源是数据统一集成中必然存在的巨大挑战。一些研究者从不同角度出发进行研究,例如,改进和扩展查询语言,将查询请求划分为多个子查询,基于语义相似性对元数据融合等。数据虚拟化面向的是多种不同应用,若对每类应用的查询,分别优化其查询语言则会影响整个数据虚拟化平台的效率,因此数据虚拟化平台提供多种访问接口对来自不同数据源的数据进行统一存取或访问。例如,对于关系数据库SQLServer,Oracle,Access,Excel等利用ODBC接口通过SQL语言访问;对于web应用程序则可以用REST或JSON接口等,以便屏蔽数据源数据模型的异构性,提供对数据的统一访问。解决数据源的异构性是保证数据服务的基础,但是由于数据源的多样性及复杂性,可能需要开发和改善更多种访问接口,所以对于数据源的异构性问题不容小觑。
异质数据的集成
对于数据异质性问题,Sujansky从结构差异、命名差异、语义差异和内容差异4个方面分析了多源数据的异质性,如数据格式中存在多种日期与时间戳的格式,相同的数据在不同的数据源中有不同的定义等,因此数据异质性处理不当会导致集成数据的质量急剧下降。一些解决方案通过将数据虚拟化、抽象化,用一种统一的描述语言(如XML)或代码生成技术对所需数据进行处理或创建虚拟表、自动生成数据服务,对用户而言屏蔽掉了底层数据的存储格式、语义等方面的差异,一定程度上解决了这一问题,但是仍没有通用的数据模型。由于XML语言易于操作、理解、跨平台可移植性等特点,很多数据虚拟化平台采用XML语言对数据进行统一描述,从数据描述方式的通用性出发,提出一种基于XML语言的DIMs(datainformationmodel)数据信息模型,并满足数据模型的可移植性。解决数据异质性是进行元数据组织,创建可重用视图/虚拟表的前提。值得注意的是,由于底层数据模型的差异,在转化为统一数据格式时,如何保证数据的正确、完整、一致性,从而确保数据映射的准确性,这是急需解决的一个关键问题。
数据映射
数据映射对查询到准确的源数据十分重要。基于一个数据源可以定义多个封装表,基于一个封装表也可以定义多个虚拟表。由于底层数据源的复杂多样性,分散的数据源间不可避免地会出现数据重复,建立的封装表间也会出现数据重叠现象。对查询而言,同一虚拟表可能会产生多个映射,进而引发底层数据源中相同数据的重复查询,导致查询的整体效率下降。这个问题涉及到封装表与映射策略,在定义封装表及映射过程中,要考虑到源端数据中的重复数据现象,对于基于不同数据源创建的有重叠数据的封装表是进行舍弃还是有效地合并?此外对于自顶而下定义的虚拟表,如何根据查询需求来正确定义映射?在保证数据消费者查询到所需数据的同时又避免重复数据查询,这是实现数据高效及准确映射时面临的挑战。
元数据组织模型
类似于数据库管理系统,元数据也是虚拟化系统运行的核心。在元数据组织模型方面,数据组织模型中,有些只关注某种特定应用或服务本身,没有考虑数据源间的数据关系,导致用户在查询时不得不对数据描述及组织方式进行分析,再通过编程查找底层数据源,这对于希望简单快速地获取所需数据资源的用户而言过于复杂。在数据即服务思想基础上,针对传统HTML数据模型在用户查询方面的不足,提出一种概念信息模型DEMODS(description model for DaaS),该模型隐藏了服务自动查询方式,将各数据源的数据交予数据组合和分析工具,对用户而言不用关心中间查询的操作。针对铁路分布式系统的信息转换、数据共享中存在的数据模型的异质性,提出一种基于XML的三维元数据组织模型,描述了不同系统中数据间关系,并实现不同数据模型与该元数据组织模型间的映射。针对一个数据虚拟化系统,合适的元数据组织模型是关键。根据用户查询需求及源数据间关系,对元数据进行分析、重新归类,建立结构性与关联性良好的、通用的元数据组织模型,特别是在数据服务层没有预先定义虚拟表或数据服务的情况下,元数据组织模型对于及时快捷的数据交付十分重要。虚拟化系统中的元数据组织模型还没有统一的标准,由于应用需求的灵活多样性,研究合适的元数据组织模型非常关键。
数据服务
大数据技术的创新及DaaS模式的发展不仅促进了数据服务的潮流还推动了组合数据服务的研究,即多个基本数据服务通过关联可以组合成满足业务需求的复合数据服务。针对DaaS组合服务中存在的数据结构的不兼容、数据隐私问题进行了研究,并提出了相应的解决方法。数据虚拟化系统同样支持数据服务间的组合,在组合过程中,由于不同数据服务中数据属性、数据隐私程度、数据结构等的不同,也存在数据结构的不兼容、数据质量下降、数据访问权限差异等问题,数据虚拟化方案对这方面的研究较少,大都是用户在利用相应的分析组合工具进行处理,这增加了用户的负担。由于数据虚拟化系统创建的主要对象是数据服务,未来的研究中可以将数据虚拟化系统与DaaS模式融合,将数据虚拟化系统创建的数据服务作为基本服务,通过DaaS将基本数据服务模式进行合并、删除、排序、数据结构调整等,组合成新的数据服务,在减少用户操作的同时保证组合数据服务的质量。另外,对于非关系数据库,非结构化的数据内容而言,如何创建数据服务,能否以虚拟表的形式呈现各种底层数据源的查询,这也是创建数据服务中的一个重要问题。为了保证数据服务的持续可用,数据虚拟化系统需要对虚拟表进行更新,涉及到虚拟表如何根据底层数据源的变化进行自动即时更新。针对数据服务生成的虚拟表,如何保证更新的一致性及效率问题都是需要研究的重要问题。
查询优化
查询优化的目标是提高用户获取所需数据资源的效率,也是数据虚拟化系统中的关键问题。一些研究利用中间件思想,将查询优化建立在数据模型基础上。通过对数据的分析挖掘提取出能够表示数据属性、数据间关系的最少元数据,通过访问元数据缩小数据的查询范围从而减少查询响应时间,优化查询,这也从另一个角度说明了元数据的质量及组织模型的重要性。也有一些研究通过优化查询系统的性能,提高查询效率,如文献通过在存储系统中加入一组丰富的硬件加速引擎来提高对存储数据的并行处理能力。一些企业如Cisco,Composite利用基于规则或成本的优化器对每个查询请求制定最佳查询方案,并利用扫描多路技术、约束传播技术、并行处理技术等优化网络资源和数据库,从而保证目标数据及时快捷地交付。数据虚拟化系统常用的一些查询优化技术有Querysubstitution,SQLpushdown,Parallelprocessing,Distributedjoins,Shipjoins,SQLoverride等。这些技术针对不同的应用场景,在某些方面也存在一定的限制,如Querysubstitution主要应用于嵌套虚拟表的查询;SQLpushdown不能用于底层数据源为序列文件或XMLWeb服务;Shipjoins一般用于合并2个不同的数据源。由于应用的多样性,没有一种查询策略能够适用于所有的应用场景。此外在提高查询效率方面,除了应用这些优化技术,对于一些特定的查询应用,有时需要将查询请求转化为另一种查询语言。从另外一个角度来看,应用缓存技术对于提高系统查询性能有极大的裨益。数据虚拟化系统通过提供灵活可扩展的缓存机制,针对底层数据源进行相关数据的缓存,对于查询而言,可以从缓存中查找数据,加速查询并减小底层数据源的查询负载。此外,为了保证缓存数据的一致性和新鲜度,还必须根据底层数据的变化即时更新缓存,这会涉及到数据一致性、更新效率问题。
系统扩展性
数据虚拟化系统作为一种平台,新的数据源、应用请求、数据结构等会持续加入,系统必须具备良好的扩展性。新的数据所有者会开放数据源并注册到系统平台,原有的开放数据源也会全部或部分注销,这样会引起系统内的元数据组织、虚拟表定义、数据映射、数据缓存等等面临重构问题,系统必须具备在线添加、修改、更新能力,如何提高系统的扩展性与伸缩性是一个重要问题。由于用户的应用查询需求是无法预测的,要保证数据查询的性能,尤其是在处理一些大容量数据时,必须考虑到系统规模扩展后带来的性能挑战。在设计与开发数据虚拟化系统的早期阶段,就需注意考虑数据查询处理过程的性能与相关解决方案的可扩展性,以提高数据虚拟化系统的扩展性及查询性能。另外,在数据源不断地更新与数据消费者访问规模增长的情况下,如何确保数据源、封装表与虚拟表的同步性、数据一致性,并保证所有数据消费者的QoE体验,这也是数据虚拟化系统需要考虑的重要课题。
数据安全
数据安全包括数据的认证、授权和加密,认证和授权主要是针对用户而言的,而加密则是从数据本身考虑的,数据只有在安全的基础上实现有效的共享才会产生更大的价值。数据虚拟化系统针对不同应用的相同数据服务实行不同的认证和授权机制,这一特性对数据安全又有新的要求,如查询与数据源间的安全通信、跨平台/跨系统访问的数据安全等。当用户进行数据请求访问时,数据虚拟化系统会对用户凭证(如用户ID、密码等)进行检测。不同的用户即便是对相同的数据元素的访问权限也是不同的,如对于一个虚拟表,有些用户可能只具有该表部分内容的访问权限。需特别注意的是数据虚拟化系统只执行数据消费者权限的检测,确定用户对数据的访问权利,而源数据访问的授权工作则是由底层数据源的所有者决定的,二者的访问权限必须区分开。有些底层数据源有自己的安全访问机制,对数据消费者而言,要实施对源数据的访问需要具备虚拟表与底层数据源的两层访问权限;也有一些底层数据存储没有定义安全机制,对上层数据访问是完全公开的,用户只执行虚拟表的访问权限。因此,用户凭证的安全保存机制、合适的授权机制、安全认证性能等都是需要考虑的问题。针对数据服务访问权限的定义也在一定程度上限制了用户查询数据的范围,因此在定义数据服务时也需要考虑相应的安全机制。但是从另外一方面来说,过于复杂的安全机制也会影响虚拟化系统在查询、处理数据时的性能。因此在设计数据服务时如何进行安全与性能的折衷将是一个挑战。
系统管理
数据虚拟化系统实质上也是一个数据共享的平台,它以一种更简单敏捷的架构提供数据服务,也必需提供对整个数据虚拟化环境的良好管理,解决由谁负责共享的基础架构,谁负责共享的数据服务等问题。数据虚拟化管理平面需要多种系统管理工具,对系统运行过程实施管理、监控,如监测查询的数量、查询性能、系统的可用性、缓存的使用、缓存更新的速率等,这些都是需要考虑的问题。
相关软件
什么是数据虚拟化软件?
数据虚拟化技术会建立中间件,或者服务,IT架构层中数据可以从不同来源被聚集、查看并分析。该技术希望从传统集成方法(比如ETL还有数据库整合)中节省时间和费用,因为实际数据从未被从源系统中物理移动。
但是Myers认为Informatica的数据服务在某些领域也有待提升。首先,他希望看到随着时间推移软件变得更加用户友好。那样HealthNow公司业务分析师们就更容易映射数据源并依据从虚拟数据集市中拣选的信息创建简单报表。
Myers还希望Informatica与来自竞争对手的企业服务总线(ESB)技术能无缝连接操作。ESB技术是面向服务架构的支柱,它对服务提供一致的视图并隐藏了底层应用程序的复杂性。
Myers说:“你要能与消息队列交互。我知道Informatica已经在做一些队列功能,但是IBMMQ在ESB领域份额占据较大,另外还有其它竞争对手也在做。我不认为这是Informatica应该努力竞争的地方。我认为这会冲淡他们其它方面的工作成果。”
最佳实践
1.将数据虚拟化方面的责任集中起来。这么做的一个主要优点就是,能够迅速推动这项工作,并且着手处理更宏大的概念,比如定义通用规范和实施智能存储组件。
2.约定和实施一种通用数据模型。这将确保一致性、高质量的数据,让业务用户对于数据更有信心,并且提高IT工作人员的灵活性和生产力。
3.确定一种治理方法。这需要考虑到如何管理数据虚拟化环境。关键问题是谁负责共享的基础架构,谁负责共享的服务。
4.对业务用户进行教育,让他们认识到数据虚拟化的优点。抽出时间与业务用户进行交流,确保他们明白数据。日常多开展工作,让数据虚拟化能够为企业的其余部门所接受。
5.注意性能调整和可扩展性。在开发过程的早期阶段,就要调整性能、测试解决方案的可扩展性。要考虑引入大规模并行处理功能,以便处理大容量数据方面的查询性能。要兼顾这个事实:用户在专门查询和报告方面是无法预测的。
6.分阶段实施数据虚拟化。先对数据源进行抽象处理,然后将商业智能应用程序放到上面,最后逐步实施数据虚拟化的更高级的联合功能。
案例
HealthNow公司是蓝盾保险供应商,支撑纽约州西部大约80万会员。该公司拥有约2500名员工,其中包括一个30人组成的超级数据管理团队。
HealthNow公司的IT部门主要运行IBM的DB2,微软公司SQL Server和Sybase数据库管理软件。该公司还运行IBM的Cognos商业智能(BI)和TriZetto的Facets健康计划管理软件
Myers说:“三年前的这个时候我加入了HealthNow公司,那时公司还在使用传统的ETL,没有做数据服务的概念。说实话,那时候没有SOA架构,也没有参考架构。”
所有这些在大约一年半之前开始改变了,那时Myers和他的团队开始评估数据联邦和数据虚拟化技术,显著成果之一就是他们比过去能更快地提取可用信息给业务分析师。
当时,Informatica还在零售Composite软件,这是原始设备制造商协议的一部分,刚刚自助开发了Informatica数据服务产品。Myers说,Informatica数据服务的路线图看起来前途无量,但是决定因素主要与Informatica公司使用数据质量规则的能力有关系。
Myers说:“Informatica告诉我们,我们不只可以联合数据,我们还可以附送质量规则。我们可以配置数据和那些规则,使他们正确映射。开发人员可以编写虚拟的数据模型映射。他们可以在每一步中看到和配置数据。”
使HealthNow公司的Informatica胜过IBM和Composite的另一个重要因素集中在公司提供质量维护和支持的能力上。HealthNow公司与Informatica谈判协议规定,所有的服务调用都要直接让大家知道。
这家保险公司大约一年前使用了Informatica数据服务,Myers说该软件的主要益处可以用一个关键词来描述:速度。
该公司现在有能力创建“虚拟化数据集市”,从不同的数据源提取数据,它可以很容易被业务用户访问到。Myers说,创建数据集市的过程可能只需要花两天时间。而在过去,为业务分析师整理数据可能需要几个月时间才能完成。
HealthNow公司面临数据虚拟化挑战
Forrester研究机构最近的一份研究报告指出,数据虚拟化软件包常常遭到终端用户组织的质疑,他们关注如何确保敏感信息的安全。
但是安全还不是HealthNow公司面临的主要问题,这要感谢该公司高度强健的IT架构。该公司在Informatica数据服务的前面运行着IBM的WebSphere DataPower应用,它给系统提供了一层安全保护。
Myers说:“能真正接触到数据服务层的人是其他应用开发人员。而且如果我们让终端用户通过Cognos接触它,我们就在其上拥有了Cognos安全层。”
对Myers来说,更大的挑战是说服HealthNow公司的数据集成团队,让他们相信Informatica数据服务是一套稳定的环境。Myers通过执行一些小的数据虚拟化项目并产生实效克服了这一障碍。
他说:“这表明环境是稳定的,也表明数据服务是可重用组件,事实证明它可以给业务方面提交正确的数据。这些组件可以被在延续业务线的许多新项目中重用。”
Myers说,尽管HealthNow公司在数据虚拟化方面的经验不足带来了一些小问题,Informatica数据服务实施也基本没什么痛苦。该公司在两个月内已经安装配置了该系统,并通过了概念测试验证。
Myers说:“你当然可以做的更快。但是我认为,与任何具备良好架构的团队一样,我们花了很多时间先要评估某种技术的最佳用法和我们向要发展的方向。”
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市