Pattern: The Shared DatabaseCoping PatternsWhere to Use ItBut It Can’t Be Done!Pattern: Database ViewThe Database as a Public ContractViews to PresentLimitationsOwnershipWhere to Use ItPattern: Database Wrapping ServiceWhere to Use ItPattern: Database-as-a-Service InterfaceImplementing a Mapping EngineCompared to ViewsWhere to Use ItTransferring OwnershipPattern: Aggregate Exposing MonolithPattern: Change Data OwnershipData SynchronizationPattern: Synchronize Data in ApplicationStep 1: Bulk Synchronize DataStep 2: Synchronize on Write, Read from Old SchemaStep 3: Synchronize on Write, Read from New SchemaWhere to Use This PatternWhere to Use ItPattern: Tracer WriteData SynchronizationExample: Orders at SquareWhere to Use ItSplitting Apart the DatabasePhysical Versus Logical Database SeparationSplitting the Database First, or the Code?Split the Database FirstSplit the Code FirstSplit Database and Code TogetherSo, Which Should I Split First?Schema Separation ExamplesPattern: Split TableWhere to Use ItPattern: Move Foreign-Key Relationship to CodeMoving the JoinData ConsistencyWhere to Use ItExample: Shared Static DataTransactionsACID TransactionsStill ACID, but Lacking Atomicity?Two-Phase CommitsDistributed Transactions—Just Say NoSagasSaga Failure ModesImplementing SagasSagas Versus Distributed TransactionsSummary