web2.0と呼ばれる時代が来て、誰もが情報を発信し、インターネットはその仕組を提供するようになりました。ここでデータベースが、インターネットにとって必要なものとなっていきます。しかしこのデータベース(RDBMS)は、元々が企業の情報システムで使われていたようなものだったりするので、いかんせん不特定多数から大量のアクセスのあるようなWebサービスとは相性がよろしくなかったようです。それでもあの手この手を使って工夫してきましたが、やがて限界がやってきます。さて、ここで本題に入る前に分散コンピュータシステムに関する一つの定理を知っておくと良いかもしれません。
CAP定理
Consistency(一貫性・整合性) Availability(可用性) Partition-tolerance(分断耐性)の頭文字をとってCAPです。
CAP定理はこの3つを確保できた物こそが真の分散コンピュータシステムだと言っているものではありません。分散コンピュータシステムはこの3つのうちの2つは兼ね備えることは出来ても、全てを兼ね備えることは出来ないという定理です。この定理の上では分散コンピュータシステムは、一貫性と可用性、可用性と分断耐性、一貫性と分断耐性の2つだけを持つこの3パターンしかありません。RDBMSは一般的にこの3つのうち一貫性と可用性を兼ね備えたものとされてます。
ではNoSQLはというと、一貫性を捨て可用性と分断耐性を持つ物が多いです。一貫性についてもリアルタイムでの一貫性は捨てたとしても、そのうち一貫性があれば良いという実装をしているもの(Apache Cassandra)もあります。