2017年9月7日(木)、JPOUG in 15 minutes at db tech showcase Tokyo 2017にて polyglot data access の話をしました。
セッション中に「スライドは、きれいにする余裕があれば公開しますが、今のところ公開するつもりはありません。」と言ったところ、ありがたくも「えーーー」という反応をいただきました。スライドは公開しませんが、よりセッションの内容を振り返ることができるよう、本投稿にて、どのような話をしたのか記録します。
また、お話が足りなかった点を補足するために、いくつか脚注にしています。
はじめに
簡潔に日常の一端を示すスライドを表示し、“5秒”で自己紹介*1しました。
諸橋さんは普段は(壁紙の)ライオンさんではなくゾウさんを対象にソリューションを提供している
— Kazuhiro YOSHIKAWA (@yoshikaw) 2017年9月7日
polyglot data accessになじみのある方がいらっしゃるかどうかを会場のみなさんにお尋ねしました。
ゼロでした。
polyglot data accessとは?
透過的にデータベースから外部のデータソースにアクセスすること。特に異種DB間の透過的アクセスを言う。
Oracle Databaseであれば外部表とデータベースリンク
- Oracle Database’s Polyglot Configuration
主に外部データの参照:SELECTに用いる
- 参照以外の目的で外部データを用いる話は割愛
データベースを参照するアプリケーションからは、一つの表として利用できるが、裏では複数の異なるデータべース内のデータにアクセスする例
ここまでの話だと、「基本的な仕組みは、15年くらい年前からあるじゃん」って話になるのですが、そうでもないと思っているため、このセッションをしようと思いました。
Oracle Databaseも進化しています。少し新しい話をします。
パーティション外部表 - Oracle Database 12c Release 2(12.2) 新機能
外部データソースに対しての検索範囲をあらかじめフィルタおよび並列化により高速に
一年位前、まだリリース12.2が利用できる前に、Oracle OpenWorld 2016 ”Data Warehousing, Big Data, and the Cloud in the Next Generation of Oracle Database [CON6106]”by George Lumpkin, Vice President, Product Management, Oracleのセッションで用いられたスライドを拝見し、他にも新機能はたくさんある中で、これは良いなと思いました。
Hive表のサポート対象となる、Cloudera‘s Distribution including Apache Hadoop (CDH)またはHortonworks Data Platform (HDP) を利用、あるいはこれから利用を検討されている方には、特に有用。利用者は、参照する表の実態は Hive表とはわからないまま、いずれかで構成されたHadoopクラスタへ、透過的にアクセスできます。
今までこれが出来なくて、今ならこれができるというと、なんとなく「あぁ良くなってるかも」って思いませんか ? *2
こんな新しい機能の実装によって、今後 polyglot data accessがなされる場面が増えるかもしれません。
参考文献 @ oracle.com
March 2016
An Enterprise Architecture White Paper – An Enterprise Architect’s Guide to Big Data — Reference Architecture Overview
Author: Peter Heller, Dee Piziak, R
obert Stackowiak, Art Licht, Tom Luckenbach, Bob Cauthen, Avishkar Misra, John Wyant, Jeff Knudsen
http://www.oracle.com/technetwork/topics/entarch/articles/oea-big-data-guide-1522052.pdf
Oracle Database Connect 2016
[基調講演] Oracle Databaseの今までの歩みと今後の進化
オラクル・コーポレーション
システム・テクノロジー
シニア・バイスプレジデント
ホアン・ロアイザ(Juan R. Loaiza)
http://www.oracle.com/technetwork/jp/ondemand/dc04-3033461-ja.pdf
March 2017
Transforming Data Management with Oracle Database 12c Release 2
Author: Penny Avril, Willie Hardie
Contributing Authors: George Lumpkin, Tim Shetler, Patrick Wheeler
http://www.oracle.com/technetwork/database/plug-into-cloud-wp-12c-1896100.pdf
ORACLE MAGAZINE July/Auguest 2017
TECHNOLOGY: Performance
Excellent Extensions
By Connor McDonald
http://www.oracle.com/technetwork/issue-archive/2017/17-jul/o47dba-mcdonald-3807382.html
ここまでの話をまとめるにあたって、また私がpolyglot data accessに関しての理解や実現方法に関して理解を深めるために読んだ OTNにある文書です。
これらのここ1年半ほどの間に公開された文書に書いてあることの一部を、要約してお話しています。
アーキテクチャのパターンとしての「Polyglot」
先の参考文献のひとつAn Enterprise Architecture White Paper – An Enterprise Architect’s Guide to Big Data — Reference Architecture Overview のFigure 5: Big Data Architecture Patternsには、Polyglot、Lambda、Kappaの3つが記載されています。
Big Data Architecture Patternとして、2013年頃から見かけるようになった Lambda Architectureや、更に新しい Kappa Architectureと並ぶものということです。
アーキテクチャのパターンとして、Polyglot、Lambda、Kappaの順番に理解したほうが良いように感じます。ほんの一言でそれぞれを説明します。
Polyglotはデータ仮想化のひとつのであり、他の2つの「Data Services」にも相当する考えになります。
Lambda Architectureは「Stream Processingへのひとつの答え」と言われているアーキテクチャです。*3
Kappa Architectureをご存知の方はいらっしゃるかどうかを会場のみなさんにお尋ねしました。
ゼロでした。
Apache Kafkaに縁のない方がご存じなくとも不思議ではありません。
Kappa Architectureは Apache Kafkaの利用に限定されるものではありませんが、実質「Apache KafkaでLambdaをシンプルに」するものと言われています。*4
透過アクセス先の関係の逆転の例
Oracle Database’s Polyglot Configuration以外が求められる、例えば Oracle Databaseに接続して Hadoop内のHive表が参照したいではなく、なんらかの SQL on Hadoopを使っているときに、そのSQLの発行をしているといつの間にか透過的に Oracle Databaseのデータを参照したいという話になることがあります。
Oracle Databaseを中心に考えてpolyglot data accessを検討したとしても、逆からの実現方法も最初から検討しなければならなかったり。
それが、少なくとも私が、最近polyglot data accessにまつわる話題が上がるときに、起こりうる話の展開です。
なぜか。
意思決定のためのデータの集合体であるデータウエアハウスの概念
1990年にWilliam H. Inmon 氏が提唱〜必要なデータは消さずに時系列で保持活用*5
基本性質
- SUBJECT ORIENTED
- サブジェクト指向で編成
- INTEGRATED
- 統合する
- TIME-VARIANT
- 時系列を持つ
- NONVOLATILE
- 消さない・更新しない
代表的な2つのモデル
- インモンモデル
- キンボールモデル
データが既にある場所だったり、新しく存在させようとしているところが最初のアクセス先になるためです。
わたしは、こういった特性を持つデータセットに直面することが最近は多く、それが必ずしもデータウエアハウスと呼ばれるものではないにせよ、またそれが後から導入されるとなると、アクセスする目的がそのデータセットへの最初の入り口になる。
既存のデータセットから新しいデータセットへのアクセスよりも、新しいデータセットを軸に既存のデータセットも活用というような利用が多いのではないでしょうか。
ここで、データウエアハウス、データマート、OLAPといったキーワードが身近な、どちらかというとOLTPよりはこちらの分野に携わられておられる方がいらっしゃらないかを、会場のみなさんにお尋ねしました。
お一人いらっいました。
感想をお話いただきました。
わたし以外の「Polyglot data acess」にまつわる貴重な真実のひとつをお話しいただき、セッションを完了しました。
壇を降りた後、司会の関口さんから「最近PostgreSQLでこんな話がありました。」と、わたしから「Foreign Data Wrapper、FDWですね」という会話がありました。
謝辞
最後に会場にいらっしゃる方にお話しいただいたことが、とても貴重で、会場にいた みなさんの印象として残るものになったのではないかと思います。
この場をお借りして、再度、感謝を申し上げます。
どうもありがとうございました。
会場に足を運んで一緒にセッションを盛り上げてくださった みなさま、機会をくださった主催者のインサイトテクノロジーのみなさま、JPOUGのメンバー、そして同僚に感謝しています。
どうもありがとうございました。
JPOUG in 15 minutesは、こんなセッションもアリです。だったら こんな話もと思いついた方は、ぜひJPOUGのイベントでお話してみてくださいね。
*1:40歳以上で無名でダメなエンジニア(元エンジニア)が勉強会で登壇するときの注意::村上福之の「ネットとケータイと俺様」:オルタナティブ・ブログにそって
*2:セッション中は、特にここで盛り上がることはなかったのですが、セッション終了後に色々と話すネタになりました。
*3:Lambda Architectureを詳しく知りたい方は、発案者Nathan Marz本人他による著書 Big Data: Principles and best practices of scalable realtime data systems および和書 スケーラブルリアルタイムデータ分析入門 ―ラムダアーキテクチャによるビッグデータ処理 のいずれかを読んでみてください。
*4:Kappa Architectureおよび更に新しいアーキテクチャのパターンに関しては、 id:kimutansk さんが解説されている 最近のストリーム処理事情振り返り | PPT や Modern stream processing by Spark Structured Streaming | PPTをご覧いただくのが、良いと思います。
*5:E.F. Codd氏が“A Relational Model of Data for Large Shared Data Banks“を発表したのは1970年。OLAP – Online Analytical Processingという単語を作ったのは1993年。