

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 考慮專用資料庫
<a name="net-purpose"></a>

## 概觀
<a name="net-purpose-overview"></a>

執行 Microsoft 型工作負載的最昂貴層面之一，來自商業資料庫的授權，例如 SQL Server。企業通常會在 SQL Server 上標準化為選擇的資料庫平台，並融入組織的開發文化。無論使用案例為何，開發人員通常會選擇關聯式 SQL Server 型模型。原因包括：
+ 企業已有可用的 SQL Server 執行個體和/或授權。
+ 團隊已透過使用共用程式庫、ORMs和商業邏輯，習慣 SQL 程式設計模型。
+ 管理層不知道替代方案。
+ 開發人員不知道替代方案。

專門建置的資料庫可以容納使用案例的資料存取模式。這些資料庫隨著採用更現代的架構 （例如微服務） 以及個別應用程式的範圍縮小而逐漸受到企業採用。

正在專門建置的資料庫不會排除關聯式模型，或需要 NoSQL （非關聯式） 模型。事實上，在選擇關聯式資料庫以回應工作負載的特定需求時，關聯式資料庫會被視為專門建置。使用專門建置的資料庫可協助團隊降低與其 .NET 應用程式相關的資料庫成本，同時獲得標準雲端優勢，例如可擴展性、彈性和減少無差別的繁重工作。

下表顯示 提供的專用資料庫 AWS。


****  

| 資料庫 | Type | 特性 | 
| --- | --- | --- | 
| [Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) 或 [Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html) | 關聯式 | 資料具有固定結構的使用案例關聯式資料庫會透過 ACID 交易自然維持資料一致性 | 
| [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) | 鍵/值對 | 使用雜湊資料表資料結構存放資料的 NoSQL 資料庫高效能儲存和擷取非結構化資料使用案例包括使用者設定檔、工作階段狀態和購物車資料 | 
| [Amazon ElastiCache](https://aws.amazon.com/elasticache/) | 記憶體內 | 高效能 NoSQL 資料庫，可將非結構化資料存放在存取時間低於毫秒的記憶體中用於經常存取的暫時性資料，例如使用者工作階段，並在其他較慢的資料存放區前面做為快取層包括對 ElastiCache (Redis OSS) 和 ElastiCache (Memcached) 的支援 | 
| [Amazon MemoryDB](https://aws.amazon.com/memorydb/) | 耐用的記憶體內 | 具有耐用儲存的 Redis 相容專用資料庫 | 
| [Amazon Timestream](https://aws.amazon.com/timestream/) | 時間序列 | 專為暫時順序高輸送量資料擷取所設計的資料庫使用案例包括物聯網 (IoT) 應用程式和儲存指標或遙測資料 | 
| [Amazon DocumentDB](https://aws.amazon.com/documentdb/) | 文件 | 在沒有規定結構或強制執行與其他資料的關係的情況下存放資料的 NoSQL 資料庫通常用於讀取密集型工作負載，例如產品目錄 | 
| [Amazon Neptune](https://aws.amazon.com/neptune/) | 圖表 | 同時保留資料和資料項目之間連線表示的 NoSQL 資料庫使用案例包括詐騙偵測、建議引擎和社交應用程式 | 
| [Amazon Keyspaces](https://aws.amazon.com/keyspaces/) | 寬欄 | 以 Apache Cassandra 為基礎的高效能分散式資料庫使用案例包括 IoT 應用程式、事件處理和遊戲應用程式 | 

採用專用資料庫的重要驅動因素可歸因於消除商業授權。不過，[DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html) （包括[隨需模式](https://aws.amazon.com/blogs/aws/amazon-dynamodb-on-demand-no-capacity-planning-and-pay-per-request-pricing/))、[Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Integrating.AutoScaling.html)、[Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/manage-console-autoscaling.html) 和 [Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/autoscaling.html) 等資料庫的自動擴展功能可讓您佈建一般案例的容量，而不是尖峰用量。Timestream 等專用資料庫是無伺服器且自動擴展以滿足需求，無需任何預先佈建。

AWS 如果您想要使用專門建置的開放原始碼相容關聯式資料庫，但無法或不願意對應用程式進行重大程式碼變更，則 會提供 [Babelfish for Aurora PostgreSQL](https://aws.amazon.com/rds/aurora/babelfish/)。在某些情況下，Babelfish 允許您使用現有的 SQL Server 存取碼，幾乎沒有變更。

選擇應用程式專用的關聯式資料庫時，請務必保留應用程式所需的相同 （或同等功能） 功能。此建議會將專用資料庫視為應用程式的主要資料存放區。特定應用程式 （例如快取） 會在其他建議中處理。

## 成本影響
<a name="net-purpose-cost"></a>

為 .NET 工作負載採用專門建置的資料庫，雖然不太可能直接影響運算耗用量/成本，但 可以直接影響 .NET 應用程式使用的資料庫服務成本。事實上，相較於敏捷性、可擴展性、彈性和資料耐久性的額外優勢，節省成本可能是次要目標。

在本指南的範圍之外，解釋為應用程式選擇專用資料庫的完整程序，以及重新建構資料策略以有效使用它們。如需詳細資訊，請參閱 AWS 教學課程目錄中[的專用資料庫](https://aws.amazon.com/tutorials/purpose-built-databases/)。

下表顯示幾個範例，說明以專用資料庫取代 SQL Server 如何改變應用程式成本。請注意，這些只是粗略的預估值。計算確切的生產成本需要實際工作負載的基準和最佳化。

這些是一些常用的專用資料庫預估，包括 中的隨需運算和 100 GB SSD、單一執行個體資料庫`us-east-1`。授權成本包括 SQL Server 授權加上軟體保證。

下表顯示商業資料庫範例的預估成本。


****  

| 資料庫引擎 | 授權模式 | 執行個體類型/規格 | AWS 運算 \$1 儲存成本 | 授權成本 | 每月成本總計 | 
| --- | --- | --- | --- | --- | --- | 
| Amazon EC2 上的 SQL Server Standard 版 | 包含授權 | r6i.2xlarge (8 個 CPU/64 GB RAM) | 1，345.36 美元 | 0.00 美元 | 1，345.36 美元 | 
| Amazon EC2 上的 SQL Server Enterprise Edition | 包含授權 | r6i.2xlarge (8 個 CPU/64 GB RAM) | 2，834.56 美元 | 0.00 美元 | 2，834.56 美元 | 
| Amazon EC2 上的 SQL Server Standard 版 | BYOL | r6i.2xlarge (8 個 CPU/64 GB RAM) | 644.56 美元 | 456.00 美元 | 1，100.56 美元 | 
| Amazon EC2 上的 SQL Server Enterprise Edition | BYOL | r6i.2xlarge (8 個 CPU/64 GB RAM) | 644.56 美元 | 1，750.00 美元 | 2，394.56 美元 | 
| Amazon RDS 上的 SQL Server Standard 版 |   | db.r6i.2xlarge (8 個 CPU/64 GB RAM) | 2，318.30 美元 | 0.00 美元 | 2，318.30 美元 | 
| Amazon RDS 上的 SQL Server Enterprise Edition |   | db.r6i.2xlarge (8 個 CPU/64 GB RAM) | 3，750.56 美元 | 0.00 美元 | 3，750.56 美元 | 

下表顯示專用範例的預估成本。


****  

| 資料庫引擎 | 執行個體類型/規格 | AWS 運算 \$1 儲存成本 | 授權成本 | 每月成本總計 | 
| --- | --- | --- | --- | --- | 
| Amazon Aurora PostgreSQL | r6g.2xlarge (8 個 CPU/64 GB RAM) | 855.87 美元 | 0.00 美元 | 855.87 美元 | 
| DynamoDB | 佈建的基礎 100 WCU/400 RCU | 72.00 美元 |   | 72.00 美元 | 
| Amazon DocumentDB | db.r6i.2xlarge (8 個 CPU/64 GB RAM) | 778.60 美元 |   | 778.60 美元 | 

**重要**  
資料表是根據購買前三年具有軟體保證之 SQL Server 的預估授權成本。SQL Server Standard 版：4，100 USD，2 個核心套件，3 年。針對 SQL Server Enterprise Edition：15，700 USD，2 個核心套件，3 年。

我們建議您在採用專用資料庫之前考慮成本影響。例如，更新應用程式以使用專用資料庫的成本與應用程式和來源資料庫的複雜性有關。規劃此架構切換時，請務必考量總擁有成本。這包括重構您的應用程式、提升新技術的員工技能，以及仔細規劃每個工作負載預期的效能和耗用量。從那裡，您可以判斷投資是否值得節省成本。在大多數情況下，維護end-of-support的產品是安全和合規風險，而修復產品的成本值得努力和初始投資。

## 成本最佳化建議
<a name="net-purpose-rec"></a>

對於存取 SQL Server 的 .NET 應用程式，有專用關聯式資料庫的替代程式庫。您可以在應用程式中實作這些程式庫，以取代類似的 SQL Server 應用程式功能。

下表重點介紹可在許多常見案例中使用的一些程式庫。


****  

| 程式庫 | 資料庫 | 取代 | 架構相容性 | 
| --- | --- | --- | --- | 
| [Npgsql 實體架構核心提供者](https://www.npgsql.org/efcore/index.html) | Amazon Aurora PostgreSQL | 實體架構核心 SQL Server 提供者 | 現代 .NET | 
| [Npgsql 實體架構 6 供應商](https://www.npgsql.org/ef6/index.html) | Amazon Aurora PostgreSQL | 實體架構 6.0 SQL Server 提供者 | .NET Framework | 
| [Npgsql](https://www.npgsql.org/doc/index.html) (ADO.NET 相容 PostgreSQL 程式庫） | Amazon Aurora PostgreSQL | ADO.NET | .NET Framework/Modern .NET | 
| [MySQL 實體架構核心提供者](https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.html) | Amazon Aurora MySQL | 實體架構核心 SQL Server 提供者 | 現代 .NET | 
| [Pomelo.EntityFrameworkCore.MySql](https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql) | Amazon Aurora MySQL | 實體架構核心 SQL Server 提供者 | 現代 .NET | 

[使用 Babelfish 連線至 Amazon Aurora PostgreSQL ](https://babelfishpg.org/docs/client/csharp/) 不需要任何特殊編碼即可連線。不過，所有程式碼都應該在使用前經過徹底測試。

其他專用建置的資料庫具有用於存取 .NET 相容程式庫的程式庫，可讓您存取專用建置的資料庫。範例包括：
+ [使用 Amazon DynamoDB NoSQL 資料庫](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/dynamodb-intro.html) (適用於 .NET 的 AWS SDK 文件）
+ [MongoDB C\$1 驅動程式](https://www.mongodb.com/docs/drivers/csharp/current/) (MongoDB 文件）
+ [.NET](https://docs.aws.amazon.com/timestream/latest/developerguide/getting-started.dot-net.html) (Timestream 文件）
+ [使用 Cassandra .NET Core 用戶端驅動程式以程式設計方式存取 Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/using_dotnetcore_driver.html) (Amazon Keyspaces 文件）
+ [使用 .NET 連線至 Neptune 資料庫執行個體 ](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-dotnet.html)(Neptune 文件）

如果您遷移至專用內建資料庫，您可以使用 中的這些工具 AWS 來協助遷移程序：
+ [AWS Schema Conversion Tool (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/) 可協助您將 SQL Server 結構描述轉換為 Amazon Aurora 和 Amazon DynamoDB。
+ [AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms/schema-conversion-tool/) 可協助您將資料從 SQL Server 遷移至 Aurora 或 DynamoDB 一次或持續遷移。
+ [Babelfish Compass](https://github.com/babelfish-for-postgresql/babelfish_compass) 可協助您檢查 SQL Server 資料庫的相容性，以便與 Babelfish for Aurora PostgreSQL 搭配使用。

## 其他資源
<a name="net-purpose-resources"></a>
+ [將 SQL Server 遷移至 Amazon Aurora PostgreSQL 的指引](https://aws.amazon.com/blogs/database/migrate-sql-server-to-amazon-aurora-postgresql-using-best-practices-and-lessons-learned-from-the-field/) (AWS 資料庫部落格）
+ [Babelfish APP Modernization Immersion Day](https://catalog.workshops.aws/babelfish-app-modernization/en-US) (AWS 工作坊工作室）
+ [.NET 沉浸日](https://catalog.us-east-1.prod.workshops.aws/workshops/02696107-09ac-4313-a6cb-3798048b07d7/en-US/3-choosing-a-cloud-native-database-for-my-net-application) (AWS Workshop Studio)
+ [使用 .NET (GitHub) 開始使用 Amazon Timestream](https://github.com/awslabs/amazon-timestream-tools/tree/mainline/sample_apps/dotnet) GitHub
+ [上的現代 .NET 應用程式專用資料庫 AWS](https://d1.awsstatic.com/events/Summits/reinvent2022/XNT304_Purpose-built-databases-for-modern-NET-applications-on-AWS.pdf) (AWS 簡報）