データベース内機械学習に求められる機能
次に、データ量の増加に対してスケールできるような、データの移動を極力軽減したデータベース内での機械学習を実現していくには、どのような機能実装が必要となるかについて考えていきたいと思います。
前述の機械学習の一般的なプロセスにおいて、データの移動が発生するポイントを考えると、まずは「データベースの領分」から「機械学習の領分」の間があります。機械学習の領分をデータベース側に持ってくる必要があります。そのために必要なるのは、前述の「データ構造の違いを吸収する機能」と「機械学習機能」自体の機能になります。
また、次の「機械学習の領分」から「業務システムの領分」にまたがる部分でのデータの移動を軽減するには、いくつか段階があると思いますが、比較的in/outが多くなる「モデル適用結果の評価」を機能として有していると効果が高いと思われます。また、究極的には業務システムのデータも統合されることとなれば、「業務システムの領分」境界でのデータの移動も無くすことが可能となります。これらを列挙すると以下のような形となります。
データ移動の問題はトレードオフの側面がありますので、単に全て統合すればよいという話ではありませんが、これらの機能の実装の度合いに応じて、データ移動の問題をどのレベルで解決できるか、選択肢の幅が変わってくるのではないかと思います。
データベース内での機械学習の実装(オラクルの場合)
ここまで述べてきたデータベース内の機械学習の実装の例としてオラクルを挙げてみます。オラクルの場合はクラウドが一般的になるはるか前の2002年にThinking Machines Corpの買収で獲得したDrawinの後継としてOracle Data Miningがデータベース内機械学習の実装としてリリースされました。この時点でデータの移動を極力抑えた機械学習の実装が始まっています。データベース内機械学習の歴史が長い分だけ、その周辺や行きつく先も見据えた機能の実装が既にされている状態になっています。
従来型の機械学習プロセスにおいても利用されているSQL関数群はそのままデータ変換に活用できますし、データセットとリレーショナル表の違いを暗黙的に吸収する機構も内包され、機械学習のモデル生成時の前処理として動作する機構を備えています。
またデータが大量になることが想定されているため、モデル生成の並列化なども実装されています。またモデル適用はSQL関数として実装され、こちらもSQLベースの並列処理の枠組みの上に乗る形で大量データに対する機械学習処理を実現することが可能となっています。