なんで今さら? 国産RDB
日経コンピュータ誌(2019年11月14日号)に、国産RDB(リレーショナルデータベース)開発に関するニュースが出ていた。この記事を読んで最初に感じたことは、「なんで今さらRDBを開発するのだろうか? それも政府主導で?」という疑問である。 同誌の記事によれば、開発費を拠出するのは経済産業省所管の新エネルギー・産業技術総合開発機構(NEDO)で、最大25億円を投じる。実際に開発にあたるのはNEDOから委託された複数のベンダーと大学のようだ。 「新しく開発するRDBの特徴は厳格なOLTP(オンライントランザクション処理)が可能でありながら、ビッグデータ分析にも使える高いOLAP(オンライン分析処理)性能を有している点だ」 さらにこのRDBは 「SQLクエリーなどはオープンソースソフトウェア(OSS)のPostgreSQL互換として使い勝手を高める」としている。 この時期(この時代?)にRDBを開発する意図は何か? それは、OLTPに関して2013年に「SILO」という新しい方式が提案されて以降、「トランザクション処理方式の常識が大きく変わり始めた」からだそうだ。 新しいRDBは2022年度に完成の予定であるが、2020年に新しい処理方式を実装したプロトタイプが発表される予定だという。 私はRDBのトランザクション処理に関しては2PC(2フェーズコミット)くらいしかしらない。従って、SILO方式の詳細を知らないが、 「既存のRDB製品がSILOに対応しようとするとアーキテクチャを根本から作りかえる必要がある」という説明には若干の疑問を感じる。例えば、Oracle社のRDBがこの新方式に対応しようとした場合、全体のソースコードのうち何パーセントくらいを改変する必要があるのだろうか?OracleやSybaseが世に出たのは1980年頃であるが、日本で注目されるようになったのは1990年代のことである。この当時は、オンライントランザクション処理(OLTP)は従来の階層型DBやCODASYL型DBの方が有利だと考えられていた。これは、大抵のOLTPは定型業務だから、これを意識した構造のDBの方が性能上有利だと考えたのである(RDBの場合はテーブルの結合などが発生するから性能上不利だと考えられた)。 一方、RDBはテーブルの結合や問い合わせ言語(SQL)の柔軟性が高いから、非定型業務(情報系)に向いていると考えられていた。 しかし、RDB製品そのものの性能向上や、性能チューニング技術の向上などもあってトランザクション処理系もRDBで実装されるようになった(と記憶している)。 いずれにしろRDB製品が普及し始めてから約30年が経過しているわけである。各製品とも最初からフル機能を装備していたわけではない。新しい技術(新しいインフラ技術、インフラ環境)が出るたびに機能追加や機能強化が行われ、さらにバグ改修が進められてきた。この30年間の技術や人材・ノウハウの蓄積は大きいのではないだろうか? これから開発するRDB製品が、既成製品の品質・性能を凌駕して世間の認知を得ることは相当困難だと考えられる。 さらに、新しいRDBの特徴と言われる部分にも疑問を感じる。「厳格なOLTPと、高いOLAP性能」という部分である。先にも触れたように、大抵のオンライントランザクション処理は定型処理である。典型的な処理(例えば銀行口座からの引き落とし業務)を思い浮かべてみると、参照するテーブルや更新するテーブル、そして更新する順番は決まっている。一方のOLAPは、主にデータ分析に使われるから参照系が主で、テーブルを更新するケースはずっと少ないと考えられる。 すなわち、OLTPとOLAPでは、それが使用される業務も目的も異なっている。いったい、これから開発するRDB製品はどのようなドメイン(事業領域)を狙っているのだろうか? また、RDBが広く利用されるようになった後も、オブジェクト指向DB(OODB)やNoSQLなど、業務形態に適応した新しいDBが出ている。この観点からも「なぜ今さらRDBなのか? これはイノベーションなのだろうか?」と思ってしまうのである。 |
追記) 日経コンピュータ誌の同じ号に「アマゾンが Oracle DB を全廃」という記事が出ている。 アマゾンは2019年10月15日、社内から Oracle Database を全廃したと発表した。Oracle DB は、最盛期には約7,500も存在していた。Oracle DB からの移行先は、AWS(アマゾンが提供するクラウドサービス)で提供するDBサービスである。 今後は用途によって、 ①MySQLやPostgreSQLと互換性のある、分散型RDBサービスのAmazon Aurora ②NoSQLサービスのAmazon DynamoDB ③データウェアハウス(DWH)サービスであるAmazon Redshift などを使い分けるという。 さて、先に記した国産RDBは①~③のうちのどの用途を狙って開発されるのだろうか? ①のようだが、同時に③を狙っているようにも読める。①と③は同じアーキテクチャで可能なのだろうか? 今後の報道を待ちたい。 |
|
2019年12月 追記: Webで検索してみると、「SILO」は2013年に発表された論文「Speedy Transactions in Multicore In-Memory Databases」で提唱されている仕組みで、分散DBを対象としたOLTPのようだ。 SILOの「コミットプロトコル」は基本的に4フェーズになっており、フェーズ1から「Write lock」、「Validation」、「Pre-commit」、「Durable commit」と続くそうだ。 私はDBの専門家ではないので技術の詳細は分からないが、分散DBを対象としたOLTPが、どのような業種・業務(および業務形態)で使われることを想定しているのか、そちらの方が気になる。 |
ディスカッション
コメント一覧
まだ、コメントがありません