4章エンコーディングと進化
万物は流転し、留まるものはない。
――ヘラクレイトス、『クラテュロス』におけるプラトンによる引用(紀元前360年)
時間とともにアプリケーションは変化せざるを得ません。新しいプロダクトのローンチ、ユーザー要求のさらなる理解、ビジネス環境の変化などに伴い、機能の追加や変更が行われます。1章では進化性という概念を紹介しました。システムの構築は、変化に容易に適合できるように行うべきです(「1.4.3 進化性:変更への配慮」参照)。
多くの場合、アプリケーションの機能に変更を加えるなら、そのアプリケーションが保存するデータにも変更を加える必要が生じます。おそらく新しいフィールドやレコードの種類を追加したり、既存のデータを新たな方法で提示したりする必要が出てくるでしょう。
2章で述べたデータモデルは、そういった変更を乗り越える様々な方法を紹介しました。概してリレーショナルデータベースが前提としているのは、データベース中のすべてのデータが1つのスキーマに従うということです。(ALTER
文によるスキーマのマイグレーションによって)スキーマは変更されることがありますが、ある時点で強制されるスキーマは厳密に1つだけです。これに対し、スキーマオンリード(「スキーマレス」)なデータベースはスキーマを強制しないので、データベースには異なる時点で書かれた新旧のデータフォーマットが混在する場合があります(「2.1.5.2 ドキュメントモデルにおけるスキーマの柔軟性」参照)。
データフォーマットやスキーマが変更されると、しばしばアプリケーションのコードにも対応する変更が必要になります(たとえば新しいフィールドをレコードに追加したら、アプリケーションのコードはそのフィールドを読み書きしはじめなければなりません)。しかし大規模なアプリケーションでは、多くの場合コードの変更を即座に行うことはできません。 ...
Get データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.