4章エンコーディングと進化

万物は流転し、留まるものはない。

――ヘラクレイトス、『クラテュロス』におけるプラトンによる引用(紀元前360年)

時間とともにアプリケーションは変化せざるを得ません。新しいプロダクトのローンチ、ユーザー要求のさらなる理解、ビジネス環境の変化などに伴い、機能の追加や変更が行われます。1章では進化性という概念を紹介しました。システムの構築は、変化に容易に適合できるように行うべきです(「1.4.3 進化性:変更への配慮」参照)。

多くの場合、アプリケーションの機能に変更を加えるなら、そのアプリケーションが保存するデータにも変更を加える必要が生じます。おそらく新しいフィールドやレコードの種類を追加したり、既存のデータを新たな方法で提示したりする必要が出てくるでしょう。

2章で述べたデータモデルは、そういった変更を乗り越える様々な方法を紹介しました。概してリレーショナルデータベースが前提としているのは、データベース中のすべてのデータが1つのスキーマに従うということです。(ALTER文によるスキーマのマイグレーションによって)スキーマは変更されることがありますが、ある時点で強制されるスキーマは厳密に1つだけです。これに対し、スキーマオンリード(「スキーマレス」)なデータベースはスキーマを強制しないので、データベースには異なる時点で書かれた新旧のデータフォーマットが混在する場合があります(「2.1.5.2 ドキュメントモデルにおけるスキーマの柔軟性」参照)。

データフォーマットやスキーマが変更されると、しばしばアプリケーションのコードにも対応する変更が必要になります(たとえば新しいフィールドをレコードに追加したら、アプリケーションのコードはそのフィールドを読み書きしはじめなければなりません)。しかし大規模なアプリケーションでは、多くの場合コードの変更を即座に行うことはできません。 ...

Get データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.