見出し画像

企業のデータ活用の中心であるデータベースの進化とその広がり

"Creditor's Ledger, Holmes McDougall" by Edinburgh City of Print under CCA-2.0


本記事は、ここ十数年に渡るデータベースの進化に関する記事です。


企業のデータ活用の中心

データベースは、過去30年以上に渡って企業のデータ活用の中心でした。Oracle やIBMのDB2、MicrosoftのSQL Server、オープンソースの mySQL や PostgreSQL 等、各種DBMSがトランザクションと整合をもった企業のデータマネジメントを助けてきました。DBMSがトランザクション処理に求められる要件をACID特性といいます。Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)を頭字語で表したものです。それぞれは以下のような性質を表しています。

Atomicity(原子性)は、トランザクションに含まれるタスクが全て実行されるか、あるいは全く実行されない、All or nothing であることを保証する性質。
Consistency(一貫性)は、トランザクション開始と終了時に予め与えられた整合性を満たすことを保証する性質 。
Isolation(独立性)は、トランザクション中に行われる操作の過程が他の操作から独立して実行される性質。
Durability(永続性)は、トランザクション操作の完了をユーザが通知された時点で、その操作の結果は完了している(失われない)ことを示す性質。

このような特性を備えるからこそ、E-Commerce のトランザクションの殺到だけでなく、企業内の複雑なデータを組み合わせて参照と更新を行き来するような業務処理もサポートすることができました。それゆえに、データベースはあらゆる企業にとって不可欠なものとなり、企業内のデータの単一ソースとしての役割を果たしてきたのです。


データベースを取り巻く環境の変化

データベースは不動の地位を確保しましたが、データベースの周囲の環境は大きく変わってきました。私が初めて企業のデータベースをDBA(データベース管理者)として触ったのは今から20年以上も前で、RDBMSが企業システムの中核として浸透を開始した時代でした。その後、インターネットの普及から、殺到するトランザクションをさばくというシステム要件が一般化しました。そして、Web 2.0という大きなトレンドが生まれました。Webに大きな期待が寄せられ、サービス同士をオープンにして接続し合ったり、APIを提供したり、マッシュアップしたり、データをオープンに提供したりすることで、イノベーションを生み出そうする動きが生まれました。そういうコラボレーションが進む中で、トランザクションをさばくために生み出されたKVSに加えて、データの収集と分析には大きな意義があると認識されるようになり、クラウドコンピューティングが進展し、Hadoopのような大量データを扱うためのNoSQLも進化していきました。

この変化に関しては、以前、デジタリストの取材受けた際に話したことがあります。


更には、ビッグデータをベースとしたAI技術の活用、クラウドに加えたエッジコンピューティングの登場や産業用IoTの普及、そしてトランザクションに関するパラダイムを転換するブロックチェーンの応用も進んできています。


データベースの変化

そして、今、データベースは変化してきています。その期待が変わり、より多くの責任を引き受け、よりスマートな答えを提供するようになっています。DBMSは商用、OSSの両分野で発展していき、DB Engines による統計によれば2013年はその数が162種類であったものが、2019年には342種類に増えました。あわせて新しいオプションや機能も増えています。取り巻く環境の変化への対応として、データフローのアーキテクチャーを再考し、これら新しい機能をどんどん試していくことは、変化が激しくなればなるほど、合理的な選択になっています。


クラウド化

まず、データベースのクラウド化が進んできました。クラウドデータベースは従前の企業内のRDBMSシステムと比べるとスケーラビリティや災害対策の強化、コスト削減といった強みをもっています。

例えば、AWSはデータをストアする新しいコンセプトを切り開き、様々なデータベースを提供しています。Microsoftは SQL ServerをAzure上で稼働させ、Googleも、GCP上でCloudSQLを始めとするクラウドデータベース群をリリースし、様々なRDBMSからの移行を促しています。Oracleも新しいクエリ形式(JSON)を追加しながら、データベースのクラウド版を提供しています。IBMは、データを分析するAIアルゴリズムとの統合などを追加しながら、DB2をクラウドに移行しています。


インメモリ化とNoSQL

取り巻く環境の変化に関する部分で、KVS について触れました。インターネットにおけるE-Commerceのトランザクションは、当初は複雑な(複数のテーブルに渡るような)参照等はそれほどなく、大量の注文処理(挿入処理)がメインでした。その後、閲覧履歴(前にチェックした商品やページ)をリアルタイムで表示したり、それに基づくターゲティング等が普及し始め、単純な出し入れのI/O 問い合わせが従前の何百倍、何千倍に達するようになりました。このような処理は、RDBの得意とするところではなく、オンメモリで高速に処理する、KVS(Key-Value Store)が登場するようになり、後のドキュメント指向データベース、ストリーミングデータベース、グラフデータベースへとつながっていく NoSQLという一大領域が切り開かれていきました。

このメモリ上の高速処理は、もちろんデータの永続的なディスクへの保存という手段を手放した引き換えとして実現されているわけですが、アプリケーションやユースケースによってはデータの保存やそのディザスタリカバリより高速な処理が優先されるという考え方も生まれてきました。そして、オンメモリで処理する流れはRDBのメインストリームにも合流していくこととなり、そのような動きから、SAP Hana、Oracle database インメモリオプション、MySQL NDB Cluster、Amazon ElasticCache 等のインメモリデータベースへとつながるようになったわけです。


Web API に沿ったクエリの追加

SQLは今後も使われ続けるデータベースのクエリ言語であることは間違いないと思いますが、インターネット、クラウド、IoT 等の技術環境の広がりによって、Web APIに沿った形での新しいクエリ形式が追加されています。例えば、Oracleがクエリ形式にJSONを追加したと前述しました。また、GraphQLのような、RESTful Web API の持つ問題を解決し、ユーザーに提示する必要のあるデータを簡単に見つけるクエリも使われるようになりました。GraphQLはオブジェクトをシリアライズするための標準的なJavaScriptのフォーマットに従っており、ミドルエンドやフロントエンドのコードが解析しやすくなっています。また、集合関数や副問合せがない分、SQLでの問い合わせであるような JOINの複雑さはある程度隠蔽され、考える必要がなくなり、エンドユーザーが必要なデータだけにフォーカスして取得できるようになっています。IDEやPostgreSQL等のデータベースにGraphQLをラップする、Hasuraのようなツールも出てきています。


ドキュメント指向データベース

Web の各種サービスが多くのユーザーに使われるようになり、従来のテーブル形式のデータを扱う企業内のアプリケーションから、一般のエンドユーザーを対象としたものへとその主役がシフトするようになりました。多くのWebのサービスは、データ指向からWeb上のドキュメントやマルチメディアを指向するものであるため、XMLやJSON形式を含む様々な非構造・半構造のドキュメントを保持するニーズが増えました。そこでドキュメント指向データベースが登場してきます。代表的なものとしては、mongoDB、MarkLogic、CouchDB等があり、クラウドネイティブのアプリケーションにおいては、RDBの代わりに使われることも増えました。


ストリーミングデータベース

これもインターネットにおけるエンドユーザー向けのトランザクションやアプリケーションの変化から起きているトレンドです。

標準的なデータベースのモデルは大きな元帳であったわけですが、我々はTwitterやFacebookのタイムラインのような流れていくデータというものを目にする機会が増えました。このような変化は、十数年以上前にエール大学のコンピューターサイエンティストの教授であるDavid GelernterとAjay Royanによって、ワールド・ビームというコンセプトで予言されていました。


従前もデータベースのカラムは、日付を追跡するための特別なフォーマットを持っていました。ですが、InfluxDBやPrometheusのような時系列データベースは、ストリームのデータを追跡してインデックスを作成し、時間を伴う問い合わせをうまく扱えます。例えば、3月12日から5月9日までの間にユーザーが何回ログインしたか等です。

また、IoTデータ、ログ、クリックストリーム、ソーシャルメディア等や、Apache Kafka、Amazon Kinesis、JMSなどのメッセージングシステムからのデータ等、ストリーミングデータがあふれるようになり、Apache Kafka の ksqlDB のようなストリーミングを容易にハンドリングするためのデータベースも登場してきました。


グラフデータベース

データのストリーミング化に対する対応とは別に、人やモノのつながりのネットワークも、インターネット上の典型的なデータタイプとして認識されるようになりました。特にソーシャルネットワークサービスの普及による、ソーシャルグラフの概念の浸透が一役買いました。このような「つながり」を保存したり、分析したりするデータベースが登場してくるのも時代の必然といえます。

人やモノのつながりを大規模に検索するのは、従来のRDBでは非現実的な計算となりますが、グラフデータベースでは高速に処理することが可能です。特に、SNSやECでのレコメンデーションや不正検知等のユースケースがあり、有名なグラフデータベースとしては、Neo4j、Amazon Neptuneがあげられます。また、ナレッジグラフ構築向けにデザインされた TerminusDB というグラフデータベースもあります。


改ざん不能台帳

ブロックチェーンの華々しい登場により、銀行などの金融機関や、輸送物流、食物のトレーサビリティ、人事給与、政府系アプリケーションなどデータの整合性と履歴を維持する必要があり、改ざん不能であることが求められるユースケースが数々開拓されていきました。Hyperledger Fabric、Ethereumなどのブロックチェーンフレームワークにより自前で台帳データベースを作ることに加えて、Amazon QLDB のような台帳データベースもリリースされました。


今後のデータベースの発展

以上、ここ十数年に渡るデータベースの進化と発展について概観しました。

クラウド、ビッグデータ、ソーシャルネットワーク、AI、ロボティクス、IoT、5G。現代は、新しい技術トレンドの登場とその普及が息をつかせぬほど激しく進んでいます。そのような激動の流れの中で、データベースは、過去30年以上にわたって企業のデータ活用の中心であり、そして時代にあわせた形で発展をしてきました。

現在、多くの企業がデータドリブン経営を指向しており、また産業分野においてもデータを起点としたビジネスのアップグレードが進んでいます。


これからは、AI技術の応用が進む中でアナリティクスと高度に連携をし、かつデジダル時代に相応しい、より洗練され、かつ安全なシステムの核となり、エンドユーザーを、そして社会を支えていくことが、データベースに求められていきます。データベースは企業やビジネスにおける中心であり続けます。今後も、その展開を注目すべき技術であり、プロダクトであると言えるでしょう。

この記事が気に入ったらサポートをしてみませんか?