Skip to content

SQL 托管

为你的应用程序选择一个 SQL 数据库系统

Section titled “为你的应用程序选择一个 SQL 数据库系统”

如果你正在构建 Web 应用程序、移动应用程序或任何需要存储和检索结构化数据的软件,你很可能会使用一个支持 SQL(Structured Query Language,结构化查询语言)的数据库系统。数据库的选择会显著影响你应用程序的性能、可伸缩性、成本和开发体验。

在考虑你的 SQL 数据库的“托管”(hosting)时,这可以包括在你自己的硬件上运行数据库服务器、使用虚拟私有服务器(virtual private server, VPS),或者越来越普遍地,利用云提供商的数据库即服务(Database-as-a-Service, DBaaS)产品。

以下是一些广泛使用的基于 SQL 的关系型数据库管理系统(Relational Database Management Systems, RDBMS)概述:

常因其健壮性、丰富的功能和对 SQL 标准的严格遵循而备受赞誉。PostgreSQL 是一种强大的开源 RDBMS,适用于从小型项目到需要高数据完整性和高级功能(例如,复杂查询、JSONB 支持、可扩展性)的大型、复杂企业系统等广泛应用。

  • 优点: 高度可扩展,强大的社区,非常适合复杂数据类型和分析工作负载,符合 ACID 特性。
  • 缺点: 与较简单的系统相比,一些高级功能可能学习曲线更陡峭。
  • 常见用例: Web 应用程序、数据仓库、地理空间应用。

另一种非常流行的开源 RDBMS,以易用性、Web 应用程序的良好性能和庞大的社区而闻名。它是内容管理系统(如 WordPress)和许多 Web 应用程序的常见选择。

  • 优点: 设置和管理简单,读密集型工作负载速度快,广泛的主机提供商支持,庞大的生态系统。
  • 缺点: 历史上高级功能比 PostgreSQL 少,但一直在不断改进。
  • 常见用例: Web 应用程序、电子商务平台、博客平台。MariaDB 是 MySQL 的一个流行的社区开发的派生版本。

Microsoft 的商业 RDBMS,在企业环境中广泛使用,特别是那些已经使用其他 Microsoft 技术(如 .NET)的企业。它提供了一套全面的数据管理、商业智能和分析工具。

  • 优点: 与 Microsoft 产品集成性极佳,强大的 BI(商业智能)和报表工具,强大的性能,良好的支持。
  • 缺点: 对于大型部署,许可成本可能很高(不过 Express 和 Developer 版本在某些用途下是免费的)。主要基于 Windows,尽管已添加了 Linux 支持。
  • 常见用例: 企业应用程序、数据仓库、商业智能。

一个强大、功能丰富的商业 RDBMS,以其可伸缩性和可靠性而闻名,常被大型企业用于任务关键型应用程序。这是一个非常成熟的产品,具有广泛的功能。

  • 优点: 高度可伸缩且可靠,功能集广泛,适用于非常大型和复杂的事务处理系统。
  • 缺点: 可能非常昂贵(许可和支持),管理复杂。
  • 常见用例: 大规模企业系统、金融应用程序、OLTP(联机事务处理)系统。

一个无服务器(serverless)、自包含、事务型 SQL 数据库引擎。SQLite 的独特之处在于它直接嵌入到应用程序中。整个数据库(定义、表、索引和数据)存储在宿主机器上的一个文件中。

  • 优点: 零配置,可移植,使用简单,非常适合开发、测试、移动应用程序和小型网站。
  • 缺点: 不适合高并发或需要大量同时写入的应用程序。超出单机环境的可伸缩性有限。
  • 常见用例: 移动应用程序(iOS, Android)、桌面应用程序、嵌入式系统、缓存、应用程序文件格式。

现代应用程序开发大量利用基于云的数据库即服务(DBaaS)产品。这些服务管理底层基础设施、补丁、备份,并通常提供轻松的伸缩性和高可用性。

主要云提供商提供流行 RDBMS 的托管版本:

  • 亚马逊云科技 (AWS): Amazon RDS(支持 PostgreSQL, MySQL, MariaDB, SQL Server, Oracle),Amazon Aurora(兼容 MySQL 和 PostgreSQL)。
  • 微软 Azure: Azure SQL Database(基于 SQL Server),Azure Database for PostgreSQL,Azure Database for MySQL,Azure Database for MariaDB。
  • 谷歌云平台 (GCP): Cloud SQL(支持 PostgreSQL, MySQL, SQL Server)。

DBaaS 的优势包括减少运营开销、按需付费模式以及与其他云服务的更轻松集成。

  • 可伸缩性需求: 你预计你的数据和用户负载会增长多少?
  • 性能要求: 对读/写速度和查询复杂性有什么要求?
  • 数据模型复杂性: 你的数据是否适合关系模型,或者你需要支持 JSON, XML 或地理空间数据等功能吗?
  • 预算和许可: 开源与商业许可。云服务有自己的定价模式。
  • 团队专业知识: 你的团队熟悉哪些数据库技术?
  • 生态系统和工具: 驱动程序、ORMs(对象关系映射)、管理工具和社区支持的可用性。
  • 一致性 vs. 可用性 (CAP 定理): 尽管大多数 SQL RDBMS 优先考虑一致性,但在分布式系统中理解这些权衡非常重要。

MS Access:历史上,MS Access 被用于小型桌面数据库,有时也通过 ASP 等技术用于非常小的 Web 应用程序。虽然它对于简单的数据库任务用户友好,但与 PostgreSQL, MySQL 或 SQL Server 等服务器端 RDBMS 相比,由于在并发性、安全性和性能方面的限制,通常不推荐用于现代、可伸缩或安全的 Web 应用程序托管。