

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

# 常見問答集
<a name="faq"></a>

本節提供有關在微服務中啟用資料持久性的常見問題解答。

## 作為現代化旅程的一部分，我何時可以現代化單體資料庫？
<a name="q1"></a>

當您開始將單體應用程式分解為微服務時，您應該專注於現代化單體資料庫。請務必建立策略，將資料庫分割成多個與您的應用程式一致的小型資料庫。

## 我可以保留多個微服務的傳統單體資料庫嗎？
<a name="q2"></a>

保留多個微服務的共用整體資料庫會產生緊密耦合，這表示您無法獨立部署微服務的變更，而且必須在微服務之間協調所有結構描述變更。雖然您可以使用關聯式資料存放區做為單體資料庫，但 NoSQL 資料庫可能是部分微服務的最佳選擇。

## 為微服務架構設計資料庫時應考慮什麼？
<a name="q3"></a>

您應該根據符合應用程式功能的網域來設計應用程式。請務必評估應用程式的功能，並決定是否需要關聯式資料庫結構描述。如果 NoSQL 資料庫符合您的需求，您也應考慮使用它。

## 維持不同微服務間資料一致性的常見模式是什麼？
<a name="q4"></a>

最常見的模式是使用[事件驅動型架構](https://aws.amazon.com//event-driven-architecture/)。

## 如何維護交易自動化？
<a name="q5"></a>

在微服務架構中，交易包含由不同微服務處理的多個本機交易。如果本機交易失敗，您需要轉返先前已完成的成功交易。您可以使用 [Saga 模式](saga-pattern.md)來避免這種情況。

## 我是否必須為每個微服務使用單獨的資料庫？
<a name="q6"></a>

微服務架構的主要優勢是鬆散耦合。每個微服務的持久性資料都必須保持私有，並且只能透過微服務的 API 存取。如果您的微服務共用相同的資料庫，則必須仔細評估資料結構描述的變更。

## 如果微型服務的持久性資料都共用單一資料庫，如何保持其私密性？
<a name="q7"></a>

如果您的微服務共用關聯式資料庫，請確定每個微服務都有私有資料表。您也可以建立個別微服務私有的個別結構描述。