Linux 上的 SQL Server 是什么?

已完成

运行 Linux 的组织可以考虑使用 SQL Server 托管数据库。 同样,运行 SQL Server 的组织现在可以考虑将其服务器移动到 Linux 操作系统。 但他们为什么要进行这样的更改呢?

作为 Wide World Importers 的系统管理员,你负责管理其 Linux 服务器,这些服务器托管着其所有前端 Web 服务器和后端 Windows 数据库场。 你希望改为使用 Linux 体验来部署 Linux 上的 SQL Server,因此你将了解使用 Linux 上的 SQL Server 的主要优势。 你的目标是制作发送给 CTO 的演示文稿。 你将解释 Linux 上的 SQL Server 的优势以及在 Linux 上安装它的意义。

在这里,你会了解为什么要考虑运行 Linux 上的 SQL Server。

为什么使用 Linux 上的 SQL Server?

Linux 是在 Linux 内核上运行的操作系统或发行版的集合。 它是一个常用的操作系统,同时适用于本地和基于云的部署。 SQL Server 是一种常用的关系数据库管理系统 (RDBMS),过去仅在 Windows 操作系统上运行。 从 SQL Server 2017 开始,Microsoft 就支持在 Linux 操作系统上安装 SQL Server。

如果要运行 SQL Server,请记住,你并不局限于 Windows 平台。 由于 Linux 是开源的,因此可以将其安装在低成本的商用硬件上,从而降低操作系统许可费用。 Linux 还具有更小的占用空间和更低的硬件要求,因此与基于 Windows 的服务器相比,基于 Linux 的 VM 运行速度更快。

Linux 上的 SQL Server 支持 Ubuntu、Red Hat Enterprise Linux 和 SUSE。

为什么选择 SQL Server?

如果选择 Linux 上的 SQL Server 作为 Wide World Importers 的首选数据平台,则可以将当前在 Windows 平台上运行的所有现有 SQL Server 数据库部署到 Linux 上。 你还将可以使用 Linux 版本的 SQL Server 运行现有的应用程序,并且你的组织将能够重用其现有的 DBA 和应用程序开发技能。

这会在新的 Linux 环境中进行简单的备份和还原。 风险较低的方法是将非业务关键型数据库移到 Linux,并直接与 Windows 比较其功能和性能。 如果经过验证,就可以创建一个详细的迁移策略来迁移整个数据资产。 将此工作与移动到不同数据库技术和不同操作系统所需的方法进行比较。

Linux 上的 SQL Server 还具有业界领先性能的所有优点。 它在 TPC-E 性能基准检验中排名第一,同时也是 TPC-H 1 TB、10 TB 和 30 TB 性能基准检验中的第一名。 美国国家标准与技术研究院 (NIST) 将 Linux 上的 SQL Server 评为最安全的数据库。

考虑使用 SQL Server 的另一个合理原因是 PolyBase 功能。 使用 PolyBase,可以设置向外部表提供数据的外部数据源。 提交查询时,可以返回来自这些外部表的数据,就像这些数据存储在 SQL Server 数据库里的常规表中一样。 外部数据源可以包括 Hadoop、Azure Blob 存储帐户、Oracle、PostgreSQL、MongoDB 等。 设置外部表后,你还可以使用它们从 SQL Server 导出数据或将数据导入 SQL Server,而无需使用导出、转换、加载 (ETL) 包或单独的导入或导出工具。 你还可以使用 PolyBase 将外部数据源与 SQL Server 商业智能工具集成。

除了 SQL Server 以外,Wide World Importers 还具有 Oracle 和 SAP HANA 中的数据库。 你考虑使用 ETL 工具将来自所有这些数据源的数据填充到数据仓库中,以便针对其编写报表。 如果使用 PolyBase 部署 SQL Server,可以考虑在 SQL Server 中添加 Oracle 和 SAP HANA 作为外部数据源来集成这三个系统。 这样,报表就可以将所有查询提交给 SQL Server,但仍然包含存储在 Oracle 和 SAP HANA 中的数据。 在此配置中,SQL Server 充当数据虚拟化中心。

共享代码库

Linux 和 Windows 上的 SQL Server 都使用了 SQL 平台抽象层 (SQLPAL),它允许 SQL Server 在所有支持的操作系统上运行。 因此,开发人员可以使用他们喜欢的语言(如 .NET、PHP、node.JS、Java 或 Python)编写应用程序,并期望应用程序在任何系统上都以相同的方式运行,无论他们使用的是在 Windows、Linux、Linux 容器、Azure SQL Edge 上运行的 SQL Server 还是在 Azure SQL 数据库上运行的 SQL Server。

容器

使用 VM 的一个缺点是,每个虚拟机都需要操作系统的所有资源,无论运行的服务是否需要它们。 容器化的虚拟化系统通过共享主机操作系统避免此缺点,同时仍然隔离独立的应用程序和服务。 在一个容器中运行的服务独立于另一个容器中的服务。 对于服务而言,它似乎在独立的 VM 中运行,实则共享单个操作系统的内存和处理器。

可以运行 Linux 中的 SQL Server 容器。 如果你必须管理大量的这些容器,则可以使用业务流程工具,如 Kubernetes 或 Docker Swarm。 这样做可以实现高可用性,还可以通过在容器中部署新代码来使 DevOps 团队能够实现持续集成或持续交付。

知识检查

1.

你在 SAP HANA 中有产品目录数据,在运行于 Linux 上的 SQL Server 中有销售数据。 你想要编写一个报表,该报表使用来自两个系统的数据来分析所有产品的利润率,但你想要最小化数据库管理员所需的工作量。 该怎么办?

2.

你有用 Python 编写的移动应用,你的销售团队使用它来记录订单和查看销售业绩数据。 最近,你已将数据库从 Windows 服务器迁移到 Ubuntu Linux 服务器。 需要在应用代码中进行哪些更改?