SQL 2005 Compact Edition 数据存储
SQL Server 2005 Compact Edition (SSCE) 为构建多种应用程序类型提供功能强大并且轻型的数据存储引擎。本文介绍了客户端应用程序和小规模服务器应用程序的数据存储问题。文章讨论了 SSCE 的功能集以及该功能集如何解决数据存储问题。全文对各种与 SSCE 相适用的应用程序体系结构进行了介绍,重点讲解了应用程序类型的属性以及 SSCE 如何满足每种应用程序类型的要求。
简介
为应用程序选择合适的数据存储体系结构可以说是件令人望而生畏的任务。可供选择的数据存储技术非常多,并且还在日益增长。数据存储技术的选择取决于多种因素。您必须在平台要求、大小、性能、部署的便捷、数据的易访问性以及数据存储能力之间找到平衡点。
对于服务于大量用户的服务器应用程序,无疑应当选择使用 SQL Server 2005。至于具体选择基于服务器的哪个版本,则取决于应用程序的规模及其针对的领域,但通过功能列表您可以很容易地确定自己需要哪个版本。此外,更改版本只是决定使用何种许可,通常不需要更改体系结构。
对于客户端应用程序或小规模服务器应用程序,选择数据存储技术稍微有些棘手。对于客户端应用程序,由于成本、复杂性、平台要求和很多其他因素,将完整的 SQL Server 2005 实例放在每个客户端计算机上是没有意义的。小规模的服务器应用程序可能不需要 SQL Server 2005 的某些额外功能,并且昂贵的许可成本也是小型项目无法接受的。对于移动设备应用程序,平台无法支持完整版本的 SQL Server。
本白皮书主要讨论使用新的 SQL Server 2005 Compact Edition (SSCE) 时所涉及的数据存储体系结构挑战、方案和解决方案。文章对 SSCE、其他 SQL Server 2005 版本以及其他关系数据库技术(包括移动设备上的 EDB 嵌入式数据库引擎)之间的异同进行了比较。
数据存储挑战
对于客户端应用程序或小规模服务器应用程序,您需要解决很多数据存储方面的挑战:
• 数据存储位置。如果您要构建分布式客户端应用程序,并且可以承担将数据存储于后端服务器并通过网络检索数据的费用,完全可以在服务器上使用 SQL Server 2005。如果要构建移动设备或客户端应用程序,则可能需要在客户端建立本地数据存储,以便在脱机时缓存数据。同时您可能还需要在客户端进行缓存,以避免通过网络重复检索诸如产品目录的大型数据集。对于客户端应用程序,可能只需在本地访问数据,在这种情况下,将数据存储在后端服务器上是没有意义的。
• 数据的易访问性。生产效率对于在预算内将应用程序按时推向市场来说是非常重要的。因此您应该选择那些能够轻松从存储位置读写数据的数据存储技术。
• 易查询性。功能强大的数据存储技术能够使您便捷迅速地搜索和选择单个记录或记录集合。
• 同步数据存储的能力。对于移动客户端应用程序,存储在本地的脱机数据必须要与后端数据存储保持同步。重新编写同步机制不仅容易出错,并且很耗时。因此选择的数据存储技术应当能够支持对多个数据存储的同步。
• 安全性。在存储数据时,安全性对于数据的保护来说是非常重要的,尤其对于移动设备或便携式客户端计算机更是如此。这样,一旦计算机被窃,未经授权的用户是无法访问其中存储的数据的。而且在同步数据时,对于传递中的数据也要提供一定的保护措施。
• 数据的完整性。当您对数据存储进行数据读写操作时,需要确保数据存储一致,没有发生数据损坏。事务性数据存储提供了确保完整性的机制,与非事务性数据存储相比应该更受欢迎。
• 部署的便捷。对于客户端应用程序,资源占用较少、安装过程简便是实现可支持性和可维护性的关键。客户端应用程序所需的配置也应最大程度地精简,以便将应用程序连接到数据存储。
数据存储概述
对数据进行存储有一系列的可选方案。不久以前,很多应用程序都采用各自的专有格式将数据序列化为磁盘上的平面文件。XML 为在文件中存储任意数据提供了一种更为结构化、更容易操作的方式,但这并未解决前一节中所述的很多问题。要解决实现强大可靠的数据存储所面临的各种挑战,关系数据库技术是目前唯一真正广泛采用的数据存储技术。
但即便您已经将目标锁定为数据库技术,仍然可以有多种选择。您需要综合其他的标准来选择合适的技术,并根据每个方案解决上节所述挑战的方法,选择合适的数据库技术。此外还需考虑数据库是以单用户客户端数据库运行还是以多用户服务器数据库运行。
在客户端应用程序中,应当将目标锁定在两种选择中的其中一个,具体取决于它是桌面应用程序,还是移动设备应用程序。如果是桌面应用程序(运行于桌面工作站、便携式计算机或 Tablet PC 之上),应考虑采用 SQL Server 2005 Compact Edition (SSCE) 或 SQL Server 2005 速成版 (SSE)。而对于运行 Microsoft Windows CE 或 Mobile 操作系统的移动设备,则可以选择 SSCE 或 EDB 嵌入式数据库引擎。
出于很多原因,SSCE 能够为大多数客户端业务应用程序提供功能强大、简单易用的解决方案。本文稍后将对这些原因给以更加详细的介绍。SSE 虽然仅用于专门的客户端应用程序,但它对于那些支持中等用户负载,同时需要功能更强、可缩放程度更高的体系结构的小规模服务器应用程序来说,也是一个不错的选择。如果设备需要本机支持,而您担心安装 SSCE 会对设备的磁盘和内存造成影响,则 EDB 可能是个不错的选择,但您需要将此方案与生产效率更高、功能更为强大的 SSCE 作一比较。
对于小规模服务器端应用程序和缓存需要,SSCE 或 SSE 都是适用的。对于将来可能需要增长和扩展的 Web 应用程序,SSE 则是更好的选择,因为与 SSCE 相比它所支持的功能更为广泛。
数据存储应用程序
应用程序的形态和大小各不相同。如前所述,大规模服务器应用程序确实需要使用 SQL Server 2005 Workgroup、Standard 或 Enterprise 版本,但这些不是本白皮书重点关注的内容。对于客户端应用程序和小规模服务器应用程序,应用程序可以划分为多种应用程序类型。这些类型包括:
• 现场团队应用程序。这些是移动工作人员在现场使用的客户端应用程序。这些应用程序通常运行于便携式计算机或 Tablet PC 之上,但也可以运行在移动设备上。对于客户或设备比较分散的工作环境来说,这些程序可以提供交互式数据展示和交流功能。
• 个人信息管理 (PIM) 应用程序。这些客户端应用程序用于存储和访问信息项集合,例如联系人、计划、任务、便笺等等。它们可以运行在台式机、便携式计算机或移动客户端设备上,但越来越多的这类应用程序是出于要在移动设备上实现低资源占用量而开发的。
• 小规模 Web 应用程序。这些是简单的 Web 平台客户端应用程序,用于通过 Web 向少数用户展示动态信息。例如小型企业、社区和非赢利组织或俱乐部。这些程序需要公开 Web 服务器,但要能够从桌面操作系统(例如,Windows Vista 或 Windows XP Professional)运行。
• 缓存应用程序。无论客户端应用程序是否是为脱机工作而设计的,在需要查找诸如城市、省份、邮政代码、产品目录列表等信息时,每次都执行完整的数据库往返通常是没有意义的。通过实现客户端数据缓存,可以为呈现列表或在很少更改的查找表中进行搜索提供重大的性能改进。另外,某些应用程序在设计时所使用的分布式体系结构可能涉及需要与集中后端应用程序服务器通信的智能客户端、移动设备或 Web 客户端应用程序。应用程序服务器可能需要将数据缓存在本地,以避免发生往返数据库服务器的操作。虽然需要将数据缓存在本地计算机,但不能因此就购买完整的 SQL Server 实例或承担高昂的开销将其安装于本地应用程序服务器上。