嵌入式实时数据库

计算机领域术语

嵌入式实时数据库,计算机领域术语。

简介
随着嵌入式系统的广泛应用及嵌入式实时操作系统的不断普及,嵌入式环境下的数据管理问题成为系统中的重要环节,构建嵌入式实时数据库系统(RTDBS)成为嵌入式开发中必须解决的问题。这里所说的嵌入式RTDBS[1][2]是指可在嵌入式设备中独立运行的一种数据库系统,用以处理大量的、时效性强且有严格时序的数据,它以高可靠性、高实时性和高信息吞吐量为目标,其数据的正确性不仅依赖于逻辑结果,而且依赖于逻辑结果产生的时间。图1是一个嵌入式应用的基本构架,整个嵌入式RTDBS构建于实时操作系统之上。由于嵌入式实时数据库系统在运行环境和运行方式上与常见的企业级数据库管理系统有很大差别,因此,传统的企业数据库如Oracle、Sybase等在实时嵌入式环境下很难发挥作用,尤其在一些实时性要求很高的控制系统中,传统数据库更显得无能为力。因此,伴随着各种商用嵌入式实时操作系统的出现,研究嵌入式环境下的实时数据库系统成为嵌入式软件中的一项重要内容。
基本结构
嵌入式系统开发中,在实时数据库问题上的多数看法是,嵌入式RTDBS从本质上说是一个“内存数据库”,是一个由应用程序管理的内存缓冲池,它在系统中的作用就是一个供多个实时任务共同使用的共享数据区。这种数据库实际上是一个嵌入在用户应
用软件中的与应用程序不可分割的部分,其功能主要是数据的存和取,不具有独立性,不是一个真正意义上的数据库系统。一个完整的嵌入式实时数据库系统除了包括内存数据库外,还应当含有历史数据库和数据库管理系统DBMS及提供给用户的接口函数,整个数据库可由DBMS完成对数据库的具体配置及各种操作,例如系统运行前根据实际需要对内存数据库中的记录节点进行增减等配置操作。嵌入式实时数据库系统可分为两大类,一类是商用级的嵌入式实时数据库系统,它独立于具体的应用软件,如美国McObject公司提供的eXtremeDB内存式实时数据库,这是一种专门为嵌入式系统数据库管理而编写的实时数据库,它将数据库直接建立在内存之中,并根据应用特征产生数据库API,用户可方便的调用这些接口函数管理整个数据库系统;另一类是用户针对具体的应用对象而自行设计开发的嵌入式实时数据库系统,这种数据库一般是嵌入到应用软件中作为应用程序的一部分,不具有独立性,测控系统中用户开发的实时数据库大都属于这种情况。
系统结构
图2所示的是一个嵌入式实时数据库系统体系结构,同传统的数据库一样,它仍然是一种三级模式的结构体系,即用户模式、逻辑模式和存储模式。在嵌入式环境下构建实时数据库系统,应该完成以下功能:高效的数据存取机制、数据安全性控制、实时事务管理机制、数据库的恢复机制等,设计中更关心的是系统的实时性、开销大小、系统性能、可靠性、可预知性和底层控制能力,即如何针对选用的实时OS和嵌入式硬件平台设计合理的数据模型和物理结构,重点放在如何高效的利用嵌入式系统的有限资源、如何提高数据的存取速度、如何进行数据保护、数据交换、查询/ 事务处理算法的优化、事务的优先级分派、事务调度和并发控制等等。
数据模型
嵌入式实时数据库系统的关键是数据模型的确立,它决定了数据被访问和操作的方式,应用程序的性能和可靠性也大部分取决于此。嵌入式环境下的数据库系统多数采用了关系模型结构,这也是商用数据库系统的数据模型,该模型结构是利用二维关系表来实现数据存储,利用索引访问和查询数据,这种模型结构是建立在严格的数学基础上的,结构简单灵活,独立性好,但在嵌入式环境下的内存开销和数据冗余较大,用户必须对其进行优化,增加了开发数据库系统的难度;有些嵌入式数据库则采用了网状模型结构,该模型通过指针来确定数据间的显式连接关系,它比关系模型中利用冗余数据和索引文件要节约大量的存储空间,具有一定的数据独立性和共享特性,运行效率较高,而且由于它避免了索引操作,比关系型
数据库模式要节省存储空间,数据操作速度也更快。但是这种模型结构比较复杂,尤其当嵌入式系统规模增大时,其数据库的结构变得非常庞大,可能会影响到系统的实时性能。图3所示的是在相同数目的记录下,关系模型和网状模型的系统开销比较,从图3中可以看出,网状模型因为避免了索引操作使得其开销要小于关系模型。但是在实际应用中,应当根据实时系统的综合性能选取数据库模型,通常可采用网状加关系或层次加关系的混合模型结构以弥补两种结构之间的缺陷,如CENTURA公司的嵌入式实时数据库RDM(Raima Database Management),它将网状和关系模型的优点结合起来,避免了不必要的索引开销,显著地减少系统存储空间I/O操作和CPU周期,由于其快速而且可靠性高的特点,广泛应用于许多嵌入式产品中。
物理结构
嵌入式实时系统中,确定性是一个重要 的性能指标,用户必须能够确定数据操作的时间和数据库存储空间的占用情况等。传统的数据库的存储管理主要是基于磁盘存储结构,数据在存取过程中需要进行频繁的I/O操作,由于I/O操作时间的不确定性,使得传统数据库存储技术无法应用在嵌入式系统中。考虑到存取时间存储空间利用率和维护代价等因素,通常嵌入式实时系统存储结构分为两个层次,第一层为内存,即RTDBS中的内存数据库,整个实时数据库系统的高性能要求就是以内存数据库做为底层支持的,它是实时数据库系统的关键,用于程序运行和实时数据的处理,它存取速度快,无需进行磁盘的I/O操作,因此最适合用于实时数据的管理和操作;第二层为外存,通常采用一些永久存储设备,需要进行读写I/O操作,用于存储系统中的历史数据。这样,对于那些固定不变的数据(如模拟量的工程单位)或存取频率相对较低的数据(如只有在故障恢复时才使用的数据备份或日志备份)放在外存空间内,而把所有的实时数据或当前工作部分的数据驻留在内存中,避免了数据库文件的操作,大大提升了实时数据库系统的性能。对于这种两层存储结构中的内存部分,可由嵌入式OS自动分配,用户也可指定系统的分配空间,一般由三部分共享内存构成,分别是索引区、数据区和系统信息区,每条记录由表名、段号、段内偏移地址来确定。
嵌入式RTDBS中数据的查找及更新相当频繁,必须建立良好的索引结构以加速各种操作的执行速度和确保数据结构的紧凑性。嵌入式RTDBS由于实时数据全部驻留内存,系统很少进行磁盘I/O操作,因此其索引结构重点解决时间和空间上的开销,其建立原则是快速定位,节省空间。通常采用的数据库索引结构为顺序结构、B树、AVL树的方法。顺序结构可采用数组方式存储,其优点是存取方便,但不便于动态维护,进行插入删除等操作时需要移动大量的数据; B树的使用最为广泛,它操作性能好,动态维护方便,但是它的每个节点的数据覆盖率仅为55%[3],存储效率太低;AVL树具有较高的存取性能,但是每个节点需要两个指针域和一些附加的控制信息,存储效率也不高。它们均不是嵌入式实时环境下的最佳选择,因此在以上结构的基础上,出现了多种改进的适用于嵌入式数据库系统的索引结构,如针对提高内存数据库性能的T*树索引结构[4],这是一种改进的T树结构,它比AVL树和B树具有更高的空间利用率,虽然查找时间复杂度稍高于AVL树,但内存中的操作使得其查找时间足以满足实时性要求,这种结构大大减少了节点间元素的移动和平衡处理的次数,较好的考虑了时间和空间的关系,是一种适用于嵌入式系统的索引结构;此外,针对嵌入式系统I/O操作性能的不平衡B树索引结构[5],主要为了减少存储块的写次数,这种索引结构的节点由若干个关键字和指针域构成,每个指针指向具有相应关键字的文件记录,由于不平衡B树避免了B树为了调节平衡产生的进一步分裂而进行的次数,因此提高了系统的写性能。
管理系统
嵌入式RTDBS系统是介于用户和实时操作系统之间的一层软件,由众多程序模块组成,它的作用是对数据库中的共享数据进行有效的组织、管理和存取。其中,存储空间管理模块、安全性和完整性控制模块、事务并发控制模块、实时数据转储模块、运行日志管理模块是在嵌入式环境下开发实时数据库系统需要特别解决的几个问题:(1)存储空间管理模块。嵌入式实时数据库系统由于采用了内存数据库技术,必然要涉及到嵌入式操作系统内存管理,因此,用户必须了解系统对内存的分配机制,并设计自己的内存管理程序。系统运行时,由该模块通过实时OS向系统申请内存缓冲区,作为共享的内存数据区使用。之后,将历史数据库中的初始化数据调入内存区对这些空白内存进行初始化。对内存空间的申请,用户可采用静态分配方式,这种方式实现简单,无需复杂的索引结构,缺点是失去了灵活性,必须在设计阶段就预先知道所需内存并对之作出分配;或者采用动态分配方式,这种方式使用灵活,可以根据需要扩充数据节点,但是必须建立合适的索引结构,以加快数据的检索时间。该模块要根据具体的实时OS进行设计;(2)数据安全性、完整性控制模块。实时数据库设计中必须考虑数据的安全性,一方面指用户访问数据的合法性,另一方面是指系统的安全性。完整性是指用户对实时数据或历史数据的各种操作必须符合一定的语义,可通过完整性约束条件来实现;(3)事务并发控制模块。实时数据库是一个共享资源,允许多个任务共同使用,如果不对并发事务进行控制,可能会造成任务错 误的读取或存储数据,破坏数据的一致性,因此实时数据库系统中,必须实现良好的并发控制机制。传统的数据库一般采用加锁的方式,类似于实时操作系统中的信号量,对于封锁粒度的大小要根据具体的应用系统确定,传统数据库获得锁的开销较小,因此通常选用小粒度封锁单位,以增加系统的并行性。但在实时数据库系统中,事务获得锁的开销与处理数据的开销相当,过小的封锁粒度反而会降低系统的性能,因此在实时数据库中的封锁粒度通常选择一张关系表为一个单位(如模拟量关系表为一个封锁单位),这样做减少了并发控制机制的复杂度,减小了系统的开销,提高了事务处理的整体性能;(4)实时数据转储模块。该模块实现的功能是将实时数据存储为历史数据,通常由该模块先将历史数据保存在内存缓冲区中,缓冲区满时才一次性的写入磁盘;读历史数据时,先从缓冲区内取数据,取不到数据时再进行文件的读写,这种方式可以降低磁盘I/O操作次数。并且只对变化数据进行存储,即节省了外存空间,又不会影响系统性能;(5)运行日志管理模块。日志文件在数据库恢复中起着非常重要的作用,可以用来进行事务故障恢复和系统故障恢复。日志缓冲区专门存放数据库操作的记录,传统的数据库日志记录包括记录名、更新前记录的旧值、更新后记录的新值、事务标识、操作类型等。在嵌入式实时数据库系统中,为了减少系统的开销,在日志记录中不包括新旧记录值,对日志记录的写操作只对缓冲区进行,当缓冲区满时,才由磁盘写操作写入日志文件当中。
设计实例
我们开发了针对测控系统的基于嵌入式操作系统VxWorks的实时数据库系统,该系统的硬件平台采用了Intel486系列的PC104 CPU板,用户可通过PC104硬件平台上的显示界面添加或删除相应的数据节点,整个应用系统结构如图4所示。该系统分为内存数据库和历史数据库两部分,内存数据库是一个数据实时更新的数据库系统,由应用程序初始化时静态创建一个大型缓冲池,用于存放各种类型的数据节点,利用空闲链表管理缓冲池中的空闲单元。程序在添加新节点时,首先从空闲链表中找到空闲单元分配给用户,然后链表中的该节点被删除。当缓冲区内存不够时,通过VxWorks中提供的增强型内存分区管理库MemLib,从系统内存中动态申请一块缓冲池作为新的缓冲池,这种静态结合动态的内存分配方式可以克服内存碎片的问题,同时也避免了静态分配中内存数据库容量设计过大或过小的问题;对于数据索引结构,考虑到实时系统中数据的检索和更新相当频繁,结合系统性能要求,在嵌入式RTDBS中我们采用了L树的索引结构,该树结合了B+树、T树和AVL树的特征,它的每一结点可含有多个关键字,具有较高的空间利用率,是一种比较好的支持内存数据库的索引结构;在基于优先级驱动的实时事务的控制上,将事务的截止时间映射为事务优先级,最简单的先来先服务FCFS的分配策略由于没有考虑到定时限制,不适合用于实时系统,因此我们采用了最短期限的分配策略;此外,对于数据库的管理,我们提供了传统数据库的管理功能,如添加、删除、修改及显示等,用户必须以相应的权限进入系统才能进行操作,显示系统利用VxWorks中的图形软件包Zinc进行开发,整个系统运行稳定,能够满足实时系统的数据管理要求。
结语
嵌入式环境下的实时数据库开发还存在许多问题需要解决,在实际应用中的性能也有待进一步提高,其关键在于实时系统的存储结构、数据的存取速度、实时事务的优先级调度、故障恢复问题,这是提高实时数据库性能的关键之处,也是实时数据库系统理论的研究重点。
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

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

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

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

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

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

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

  • 玉溪市
  • 云南省

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

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

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

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

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

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

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

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

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

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

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

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

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

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

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

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

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

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

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

  • 雅安市
  • 天津市

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

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

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

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

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

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

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

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

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

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

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

  • 武汉市
  • 湖北省

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

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

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

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

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

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

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

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

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

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

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

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

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

  • 海东市
  • 青海省

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

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

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

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

  • 西宁市
  • 青海省

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

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

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

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市