70
© 2012 ISE Corporation 1 7. ビッグデータを含めた多用なデータへの対応 <第1.00版 20129月> 本資料掲載事項は、ある特定の環境・使用状況においての正確性がIBMによって確認されていますが、すべての環境において同様の結果が得られる保証は ありません。これらの技術を自身の環境に適用する際には、自己の責任において十分な検証と確認を実施いただくことをお奨めいたします。 © Copyright IBM Japan Systems Engineering Co., Ltd. 2012

ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 1

7. ビッグデータを含めた多用なデータへの対応

<第1.00版 2012年 9月>

本資料掲載事項は、ある特定の環境・使用状況においての正確性がIBMによって確認されていますが、すべての環境において同様の結果が得られる保証はありません。これらの技術を自身の環境に適用する際には、自己の責任において十分な検証と確認を実施いただくことをお奨めいたします。 © Copyright IBM Japan Systems Engineering Co., Ltd. 2012

Page 2: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 2

• DB2 V10.1 – 広がるDB2の世界

• Federation機能強化

• Hadoopへの対応

• RDFアプリケーション開発のサポート

• pureXML機能強化

• テキスト全文検索機能 – Text Search機能強化

• まとめ

内容

Page 3: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 3

DB2 V10.1 – 広がるDB2の世界

ニックネーム

Federation

DB2 V10.1

他のDBや非DBデータに透過的にアクセス

DB2ファミリー

他RDBMS

非RDB(参照のみ)

ファイル、表形式シートなど

DB2 pureXML

リレーショナルデータに加えXMLをネイティブサポート テキスト全文検索

“DB2”を含むレコードは?

HDFSとの連携強化

セマンティックWeb

RDF/SPARQLのサポート

データソースの多様化 – 他RDBMS, ビッグデータ(HDFS)

データ形式多様化 – 定型データから非定型データへ

Page 4: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 4

Federation機能強化

Page 5: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 5

• DB2 pureScaleとの統合

• Three Part Name

• Netezza サポートの強化

IBM InfoSphere Federation Server V10.1 新機能

Page 6: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 6

DB2 pureScaleとの統合

Page 7: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 7

DB2 pureScaleとの統合

• Federation Server を使用して、DB2 pureScale データベースを拡張できるようになりました

・全てのメンバーに、データソースのクライアント(クライアント・ライブラリー)の導入が必要。

・work load balance (WLB) や automatic client reroute (ACR) も利用可能で、Federationのための特別な設定は不要。(Federationを利用していないときと同様に、db2dsdriver.cfgに設定すればよい)

・GA時点では、フェデレーション XMLと F2PC はサポートされていません。

Clients

Fed

eratio

n S

erver

Oracle

SQL server

Sybase

Netezza

Page 8: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 8

Three Part Name

Page 9: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 9

Three Part Name(1)

• ニックネームを作成しないでリモートオブジェクトにアクセス可能になりました

• 以下の2通りの書き方が可能

• <サーバー>.<リモートスキーマ>.<リモートオブジェクト>

• <リモートスキーマ>.<リモートオブジェクト>@<サーバー> (*1)

(*1) DB2_COMPATIBILITY_VECTORレジストリ変数をビット0x20000か、ORAに設定が必要

これまでの手順 Three Part Nameを使った手順

①CREATE WRAPPER

②CREATE SERVER

③CREATE USER MAPPING

④CREATE NICKNAME N1 FOR ORA11.SCOTT.T1

⑤SELECT * FROM N1

④SELECT * FROM ORA11.SCOTT.T1

ここまでは同様の手順で、いずれの方法でも連合オブジェクトを作成する(Nickname以外)

リモートオブジェクトへのアクセスまでの手順が、以下の通り簡略化されます。

CREATE SERVERで作成したサーバー名 リモートスキーマ名

アクセスするリモート・オブジェクト名

Page 10: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 10

Three Part Name(2)

• メリット

• Oracle互換性

• OracleのDBLINKの構文の変更が不要

• ニックネーム管理・保守が不要

• ニックネームの作成が不要

• NNSTATや、Index、Column情報の更新不要

Page 11: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 11

Three Part Name

• サポート

• DPF、PureScale環境

• 全てのリレーショナル・データソース

• 操作

• SELECT

• INSERT,UPADTE,DELETE

• CREATE VIEW

• MERGE(リモート表をターゲットにすることは出来ない) • UNION,INTERSECT

• スキーマがサポートしていないデータソースでは2部構成(Server_name.Obeject_name)

• NICKNAMEを使用すべきケース

• 非リレーショナル

• 索引、制約の作成

• オブジェクトレベルで許可、特権の制御

• 統計情報の更新(nnstatの使用)

※データタイプのマッピングの変更は、3PartNameでも可能

• Viewを作成する

• キャスト関数をつかう

参考

Page 12: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 12

Three Part Name

• 3PartNameの為のフェデレーテッド・キャッシュ

• メタデータと統計情報がキャッシュされる

• 最初のアクセス時にキャッシュされる

• 有効期限を設定

• 環境変数 FEDCACHE_EXPIRE_INTERVALで指定

• デフォルト値:ゼロ(明示的に無効化するまで有効)

• 推奨:db2dj.iniファイルに設定してください

• FLUSH FEDERATED CACHEコマンドで明示的にメタデータを無効化することもできる

• FLUSH FEDERATED CACHE ORA11G.SCOTT.TAB1

• FLUSH FEDERATED CACHE ORA11G.SCOTT.*

• FLUSH FEDERATED CACHE ORA11G.*.*

参考

Page 13: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 13

Three Part Name

• 以下の機能はサポートされない

• 静的SQL, 関数, トリガー, ストアドプロシージャ

• DDL (CREATE ALIAS, CREATE INDEX, ALTER TABLE等)

• NNSTATによる統計情報収集

• MQT

参考

Page 14: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 14

Netezza サポートの強化

Page 15: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 15

Netezzaサポートの機能強化

• ODBCラッパーでのNetezzaデータソースアクセスの最適化

• Netezzaデータソースに対して、ODBCラッパーでのアクセス構成を行う場合、ODBCラッパーは、NetezzaのODBCドライバーを検出して、自動的にパフォーマンスオプションを構成します。

• 追加設定を行わなくても、Pushdownが行われる設定となっています。

• 基本的な関数については関数マッピングも行われています。

• Bulk Insertが使用可能

• サーバーオプションENABLE_BULK_INSERTをYに設定することで、Netezzaのニックネームに対する複数行を処理するINSERTをBulk

Insertで行うことが出来るようになります。

ODBC Wrapper

ODBC Driver Manager Federated DB

ODBC Driver Netezza SQL

Page 16: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 16

Bulk Insert

• Bulk Insert

• Bulk Insertを使用することで、リモートのデータソースに対して大量行数を高速に処理することが出来ます。

• Bulk Insertの設定方法

• サーバーオプション:ENABLE_BULK_INSERTをYに設定

• create server文またはalter server文で設定可能

• Bulk Insertが行われる処理

a). ローカル表からニックネームへのInsert

例) insert into n11(i) select i from t1

b). 他のサーバーのニックネームからニックネームへのInsert

例) insert into n11(i) select i from n1

c). 複数の値をinsertする場合

例) insert into n11 values(111),(112),(113),(114),(115),(116),(117),(118),(119),(120)

d). 同じサーバーのニックネームからのInsertであるがPushdownが行われない場合

例) insert into n11(i) select i from n1

create server <Server_Name> type odbc version 3 wrapper ODBC_Wrapper options (node ‘nodename’, ENABLE_BULK_INSERT 'Y' )

alter server <Server_Name> options ( set ENABLE_BULK_INSERT 'Y‘)

Page 17: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 17

Netezzaデータソース設定例(Windows)

• WindowsのODBC データソース アドミニストレータからNetezzaのDSNは登録済み

C:¥work¥netezza>db2 list system odbc data sources System ODBC Data Sources Data source name Description -------------------------------- ---------------------------------------- NZDB NetezzaSQL ora11g Oracle in OraDb11g_home1 C:¥work¥netezza>db2 -tvf setupodbc.sql drop wrapper odbc DB20000I The SQL command completed successfully. create wrapper odbc DB20000I The SQL command completed successfully. CREATE SERVER NZDB TYPE odbc VERSION 3.0 WRAPPER odbc OPTIONS (NODE 'NZDB') DB20000I The SQL command completed successfully. CREATE USER MAPPING FOR USER SERVER NZDB OPTIONS (REMOTE_AUTHID 'tsota', REMOTE_PASSWORD ‘password') DB20000I The SQL command completed successfully. SET PASSTHRU NZDB DB20000I The SQL command completed successfully. SELECT VERSION() VERSION ---------------------------------------------------------------------------------------------------------------------- Release 6.0.2 [Build 17169] 1 record(s) selected. SET PASSTHRU RESET DB20000I The SQL command completed successfully.

DSNの登録を確認

デフォルトラッパー名のODBCを使用しているためLIBRARY

句の指定を省略

NODEにDSN名を指定

パススルーセッションでNetezzaサーバーのバージョンを確認

参考

Page 18: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 18

Netezzaデータソース Pushdownの例

• db2explnでPushdownされているSQLを確認 C:¥work¥netezza>db2 "select char(option,20) option,char(setting,20) setting from syscat.serveroptions" OPTION SETTING -------------------- -------------------- NODE NZDB ENABLE_BULK_INSERT Y 2 record(s) selected. C:¥work¥netezza>db2expln -d feddb -t -q "select c1,count(*) from tab1 where c2 = 'XXXXX' group by c1" ・・・省略・・・ Statement: select c1, count(*) from tab1 where c2 ='XXXXX' group by c1 Section Code Page = 1208 Estimated Cost = 626.093689 Estimated Cardinality = 4.000000 Ship Federated Subquery #1 | #Columns = 2 Return Data to Application | #Columns = 2 Federated Substatement #1: Server: NZDB (ODBC 3.0) SQL Statement: SELECT A0."C1" , COUNT(*) FROM "TSOTA" ."TAB1" A0 WHERE (A0."C2" =N'XXXXX' ) GROUP BY A0."C1" Nicknames Referenced: 1: SOTA.TAB1 ID = 65533,32768 Base = TSOTA.TAB1

サーバーオプションはNODEとENABLE_BULK_INSERTのみ

COUNT関数、WHERE句、GROUP BY句がPushdownされている

参考

Page 19: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 19

パフォーマンスデータ

• Bulk insertが有効と無効のケースで、大量行数のInsertを実施し、処理時間を比較

• Data: 200000 rows(10mb data)

• Network latency:200 ms

• SQL statement:insert into nickname1 select * from nickname2

• Note: the performance improvement mostly rely on the network communication.

Normal Insert: Bulk Insert:

Several hours done all

inserts

Over 600 rows for one bulk

insert

Several minutes done all

inserts

参考

Page 20: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 20

Bulk Insert検証

C:¥work¥netezza>db2 -tvf nz_test.sql insert into local with temp(c1) as (values 1 union all select c1+1 from temp where c1<1000) select lpad(c1,10,0),lpad(c1,10,0),lpad(c1,10,0),lpad(c1,10,0),lpad(c1,10,0) from temp DB20000I The SQL command completed successfully. alter server NZDB options (set ENABLE_BULK_INSERT 'Y') DB20000I The SQL command completed successfully. reset monitor all DB20000I The RESET MONITOR command completed successfully. insert into tab1 select * from local DB20000I The SQL command completed successfully. get snapshot for remote_databases on feddb Remote Database Snapshot Remote datasource name = NZDB Database name = FEDDB Connects = 1 Disconnects = 0 Commits = 0 Rollbacks = 0 Queries = 0 Inserts = 2 Updates = 0 Deletes = 0 Create nicknames = 0 Passthrus = 0 Stored procedures = 0 Rows returned = 0 Rows updated = 0 Rows deleted = 0 Rows inserted = 1000 Rows returned by Stored procedures = 0 Failed statements = 0 Query time (ms) = 0 Insert time (ms) = 3196 Update time (ms) = 0 Delete time (ms) = 0 Create nickname time (ms) = 0 Passthru time (ms) = 0 Stored procedure time (ms) = 0

delete from tab1 DB20000I The SQL command completed successfully. alter server NZDB options (set ENABLE_BULK_INSERT 'N') DB20000I The SQL command completed successfully. reset monitor all DB20000I The RESET MONITOR command completed successfully. insert into tab1 select * from local DB20000I The SQL command completed successfully. get snapshot for remote_databases on feddb Remote Database Snapshot Remote datasource name = NZDB Database name = FEDDB Connects = 1 Disconnects = 0 Commits = 0 Rollbacks = 0 Queries = 0 Inserts = 1000 Updates = 0 Deletes = 0 Create nicknames = 0 Passthrus = 0 Stored procedures = 0 Rows returned = 0 Rows updated = 0 Rows deleted = 0 Rows inserted = 1000 Rows returned by Stored procedures = 0 Failed statements = 0 Query time (ms) = 0 Insert time (ms) = 574641 Update time (ms) = 0 Delete time (ms) = 0 Create nickname time (ms) = 0 Passthru time (ms) = 0 Stored procedure time (ms) = 0

1000行のデータをローカル表にInsert

ローカル表からNetezza

のニックネームにInsert

Bulk Insertを使用

した場合には、Insertされた行数は1000行となって

いるがリモートデータソースに発行したInsert回数は2回となっている

Bulk Insertを使

用していない場合には、リモートデータソースに発行したInsert

回数も1000回となっている

参考

Page 21: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 21

Hadoopへの対応

Page 22: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 22

ビッグデータの分析力強化

• ビジネス分析のために収集されるデータの分量や種類は増大している

• 非常に大量で複雑なデータを新しいフレームワークで

処理することが可能に

• 新しいフレームワークに従来のBIシステムを効果的に統合するにはどうすればよいか?

非構造化データの使用量増大

Page 23: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 23

BigInsightsとDB2(RDB)連携

• DB2からのBigInsightsアクセス

• JaqlSubmit : SQLインターフェースからJaqlの実行が可能

• HdfsRead : HDFS上のデータをSQLにてよって表形式で取得可能

• BigInsights(Jaql)からのDB2(RDB)アクセス

• JaqlからDB2へのデータ読み書き可能

• DB2/InfoSphere Warehouseの他、Netezza、Informix、Oracle、Teradataとの連携サポート

Hadoop/Jaql

顧客 時間

場所

取引履歴

店舗

JaqlSubmit

HdfsRead

HDFS

.CSV

files

.log

data

レポーティング

ツール

(Cognosなど)

JaqlからDB2への読み書き

Page 24: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 24

BigInsightsとDB2連携のユースケース(1)

• 既存のSQLベースのツールからHadoopの分散処理基盤を活用

JaqlSubmit UDF HDFSRead UDF

SQL

DB2 Cubing services

Jaql client

Jaql server

Web log data on Hadoop HDFS

InfoSphere Warehouse

InfoSphere BigInsights

Page 25: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 25

BigInsightsとDB2連携のユースケース(2)

• 巨大データウェアハウスのデータをHadoop(HDFS)にオフロード

• 古いデータを分散ファイルシステムへ移行し、ストレージコスト削減

• DB2からHDFSへのデータコピー、DB2側の消しこみ処理をJaqlのジョブで実行

• 移動したデータはSQLから透過的に参照可能

• HDFS_READを使い、アーカイブ先のファイルを参照するビューを定義

Hadoop分散ファイルシステム(HDFS)

InfoSphere BigInsights DB2

2011/3Q

2011/2Q

2011/4Q

古いデータの アーカイブ

HDFS_READを利用した ビューを定義

2011/1Q

2011/1Q

Page 26: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 26

• UDFを使ったクエリーを介してHadoopの結果を取り込み使用する

• UDFはDB2の分析jobやSQLベースの分析用アプリケーションで使用可能

• 今までは、ビジネス要件の変更や様々なデータフォーマット毎に対応するために、いくつものUDFを使用してそれぞれ結果セットを生成していた

• V10の汎用表関数を使用することで分析処理をシンプルにすることが可能に!

DB2V10におけるビッグ・データの分析力強化

(3)

(2)

(1)

UDFs

Page 27: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 27

• V10より、新しく実行時に出力形式を指定することができる表関数が提供された

•今まで別々のソースからデータを読み込むためには各ソースに対応したUDFを作成する必要があった

• 汎用表関数を使用すれば、同じUDFを使って別々のソースから読み込むことが可能

汎用表関数

UDF実行時に出力形式や参照ファイルを指定することができる関数が登場した

DB2 10 新機能 !!

JAVA ジェネリック 表関数

file1

file3

file2

出力1

出力2

出力3

Page 28: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 28

Java 汎用表関数

• Javaで記述された外部ユーザー定義表関数

• 外部: DB2外でプログラミングされ実装されているプログラム

• 表関数: 結果セットとして返される機能(例えば. 複数行のセットがひとつの結果で戻される)

• なぜ ‘ジェネリック’ ?

• 実行時に様々なフォーマットを決定して出力することが可能

• 出力パラメーターはCREATE FUNCTION DDL ステートメントでは指定しない

• 関数からの出力はSQLのSELECTステートメントでアクセス可能

• SELECTステートメントで違う結果セットにフォーマットして戻すことが可能

JAVA ジェネリック 表関数

file1

file3

file2

出力1

出力2

出力3

Page 29: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 29

Hadoopとの連携

• Java Generic Table Function(実行時に出力フォーマットを決定可能)

• V9.7以前のユーザー定義表関数は、定義時に出力フォーマットを定義する必要があった。

CREATE FUNCTION HDFS_READ

( VARCHAR(3000) )

RETURNS TABLE (

C1 VARCHAR(255),

C2 VARCHAR(255),

C3 VARCHAR(255),

C4 VARCHAR(255),

C5 VARCHAR(255),

C6 VARCHAR(255),

C7 VARCHAR(255),

C8 VARCHAR(255),

C9 VARCHAR(255),

C10 VARCHAR(255),

C11 VARCHAR(255),

C12 VARCHAR(255) )

EXTERNAL NAME 'com.ibm.db2jaql.HDFSRead!hdfsRead'

LANGUAGE JAVA

SPECIFIC hdfsread

PARAMETER STYLE DB2GENERAL

DETERMINISTIC

FENCED THREADSAFE

NOT NULL CALL

NO SQL

NO EXTERNAL ACTION

NO SCRATCHPAD

NO FINAL CALL

DISALLOW PARALLEL

NO DBINFO

CREATE FUNCTION HADOOPCSVREAD(VARCHAR(255), INTEGER,

VARCHAR(255))

RETURNS GENERIC TABLE

EXTERNAL NAME 'UDFcsvReader!hadoopCsvReadString'

LANGUAGE JAVA

SPECIFIC hadoopCsvReadString

PARAMETER STYLE DB2GENERAL

VARIANT

FENCED THREADSAFE

NOT NULL CALL

NO SQL

NO EXTERNAL ACTION

NO SCRATCHPAD

NO FINAL CALL

DISALLOW PARALLEL

NO DBINFO;

参考

Page 30: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 30

汎用表関数の作成方法

• CREATE FUNCTIONステートメント内での使い方

• 事前に外部プログラムの作成・コンパイルを行い、sqllib/function以下にクラスファイルのコピーを行う(通常外部プログラムを使ったUDFと同様)

• 以下の例では、‟csvRead‟というUDF名で登録 CREATE FUNCTION csvRead(fnme VARCHAR(255),coltype VARCHAR(255)) RETURNS GENERIC TABLE EXTERNAL NAME ‘UDFcsvReader.jar:UDFcsvReader!csvReadString’ LANGUAGE JAVA PARAMETER STYLE DB2GENERAL;

DB2マネージャーがUDFを実行するための外部コードを指定

表関数の出力を実行時に決定することを記述

RETURNS GENERIC TABLEを指定する場合、以下の指定が必須 LANGUAGE JAVA PARAMETER STYLE DB2GENERAL

Page 31: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 31

汎用表関数の使用方法

select * from table(csvRead('C:¥Program Files¥IBM¥SQLLIB_v10¥test¥test2.csv')) as T(first varchar(23), last varchar(10), age smallint, salary integer, id bigint, rand_double double) where T.first like 'J%';

• selectステートメントのfrom句の中で汎用表関数が呼ばれる

• as句で表に含まれる列名とデータタイプを指定する

• 同じUDFを使ったselectステートメントで、別の表からもデータの取得が可能

Table Function

前頁で登録したUDFをコール

Page 32: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 32

汎用表関数の実行例

select * from table(csvRead('C:¥Program Files¥IBM¥SQLLIB_v10¥v10test/test2.csv')) as TX(first varchar(23),

last varchar(10), age smallint, salary integer, id bigint,rand_double double) where TX.first like 'J%' FIRST LAST AGE SALARY ID RAND_DOUBLE ----------------------- ---------- ------ ----------- -------------------- ------------------------ John Doe 26 46000 56255333387 +5.32340983000000E+004 Jack McGinnis 42 650 482525320 +2.34532320500000E+002 2 レコードが選択されました。 select * from table(csvRead('C:¥Program Files¥IBM¥SQLLIB_v10¥v10test/test1.csv')) as T(first

varchar(23), age smallint, last varchar(10)) FIRST AGE LAST ----------------------- ------ ---------- Chris 78 Weed Jonathan 11 Thompson "JJ ""Demo""" 66 Michel Steve 88 Arnold 0 Blankman 5 レコードが選択されました。

同じUDFを使用

異なるcsvファイルから データを読み込んでいる

参考

Page 33: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 33

RDFアプリケーション開発のサポート

Page 34: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 34

DB2 V10.1 RDFストアおよびSPARQLのサポート

• DB2 RDFストア

• RDFのグラフトリプルの格納にはDB2が最適

• RDFストアの作成=>トリプルおよびメタデータを保管する表のセットを作成

• クエリー言語SPARQL 1.0 +1.1の一部をサポート

• 高いパフォーマンス

• 低コスト

• スキーマレスアプローチで速い開発

• ニーズの変化に応じて容易に対応

• トリプル向けのシンプルなデータ管理

Curt Cotner 2012 Ferrari ownsCar

Curt Cotner 123 Maple Ave, Chicago ownsHouse

Curt Cotner 2001 Thunderjet ownsBoat

Page 35: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 35

RDF(Resource Description Framework)とは?

Subject:主語 Object:目的語 predicate

述語

W3Cによる規格化

RDF Primer

http://www.w3.org/TR/rdf-primer/

情報を3つの要素で記述する方法:(主語、述語、目的語) それぞれのトリプル(3つの要素)は2つのものの関係性を表す

e.g.: ( IBM , is-a, Company)

関係性はデータの一部、DB構造の一部ではない

使い道としては – スキーマやデータソースをまたがってクエリーやリンクする

– 構造化と非構造化データをリンクする

参考

Page 36: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 36

RDFトリプル • RDFは様々な情報をトリプルと呼ばれる形式に解体するための一般的な方法を提供する

• それぞれのトリプルは‟主語‟、‟述語‘、’目的語‘で構成される

• 主語と目的語は世の中の二つのものの名前を表している

• 述語はそれらの関係を表している

• 主語、述語、目的語はURI‟sとして与えられる

• 現実世界のものを表している

• 目的語はテキストとしても表すことができる

参考

Page 37: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 37

SPARQLとは?

• RDFで記述されたデータ群をクエリするための言語一式

• クエリ言語

• 結果セット記述

• プロトコル (SOAP, HTTP)

• W3C規格

• SPARQL Query Language for RDF W3C Recommendation 15 January 2008

http://www.w3.org/TR/rdf-sparql-query/ • SPARQL 1.1 Query Language

W3C Working Draft 24 July 2012

http://www.w3.org/TR/sparql11-query/

• SQLライクな記述

• 操作対象がリレーショナルなエンティティではなくて、トリプルで記述されたグラフ構造データ

• SELECT ?title

WHERE {<http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> ?title . }

• RDFのデータ群からtitleを抜き出す

参考

Page 38: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 38

Relational vs. XML vs. RDF

Relational XML RDF

Tables Trees Graphs

二次元, 構造化データ 階層型データ linkedデータ

表の行 ツリー構造の要素 トリプル

スキーマは固定 スキーマなし、または柔軟

柔軟

SQL (ANSI/ISO) XPath/XQuery (W3C) SPARQL (W3C)

参考

Page 39: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 39

pureXML機能強化

Page 40: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 40

DB2 pureXMLの歩み – V10.1機能強化

V9.1

pureXMLサポート

XML基本機能

XML列/索引

XQuery

各種ユーティリティ

V9.5

機能強化

Inline格納

部分更新

XSLT

スキーマ拡張

Replication

Load

V10.1

パフォーマンス強化

バイナリXML転送

XML索引タイプの追加

関数索引の追加

V9.7

ウェアハウス対応

DPF

MDC

パーティション表

XDA圧縮

オンライン索引再編成/索引作成

UDF

Global Temporary Table

Page 41: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 41

バイナリXML転送によるJavaクライアントのパフォーマンス向上

• Extensible Dynamic Binary XML DB2 Binary XML Format (XDBX)

• XMLの送受信時にシリアライズしてテキストを用いるのではなく、

バイナリ形式を使用することにより、XML データの送受信速度向上する

• DriverManager, DataSourceインタフェースのxmlFormatプロパティで指定

• XML_FORMAT_BINARY(バイナリ形式による転送)

• XML_FORMAT_TEXTUAL(テキスト形式による転送:デフォルト)

• 利点

• SAX, DOMなどXML をバイナリでデータの送受信速度が速くなる

前提条件:Data Server Driver for JDBC and SQLJ のバージョン 4.9 以降を使用して、

DB2 V10.1 以降のサーバーに接続する必要がある

import com.ibm.db2.jcc.DB2SimpleDataSource;

DB2SimpleDataSource ds = new DB2SimpleDataSource();

ds.setXmlFormat(DB2BaseDataSource.XML_FORMAT_BINARY);

Page 42: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 42

XML索引タイプの追加 V9.7

• 数値型の索引はDOUBLEのみ

V10.1

• INTEGERとDECIMAL型XML索引が追加

• 例

• 利点

• 数値データのタイプに合わせた索引データタイプを選択可能

CREATE INDEX EMPINDEX ON COMPANY(COMPANYDOCS)

GENERATE KEY USING XMLPATTERN „/company/emp/@id‟

AS SQL INTEGER

Page 43: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 43

関数索引の追加

V10.1

• 大/小文字を区別しない検索における fn:upper-case で作成した索引の使用

• 例

従来

• あるパス内のストリング値を大文字小文字に関係なくすべての候補を検索するには、照会を使用して検索対象のデータを大文字または小文字のいずれか一方に変換する必要があった

• この照会では検索速度の向上に XML 索引を使用できなかった

• 利点

• オプティマイザーは、XMLPATTERN 節の XML パスとマッチングする述部を持ち、fn:upper-case 関数も指定された照会で使用することを選択可能になる

CREATE INDEX clients_state_idx ON clients(contactinfo)

GENERATE KEYS USING XMLPATTERN '/Client/address/state/fn:upper-case(.)'

AS SQL VARCHAR(50);

XQUERY db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')

[Client/address/state/fn:upper-case(.)="NEW YORK"];

Page 44: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 44

関数索引の追加

• CREATE INDEX ステートメントの XMLPATTERN 節で fn:exists を組み込むことによって、対象の要素や属性が存在するかどうかを検査する XML 索引を作成

• 要素や属性は fn:exists のパラメーターとして指定し、索引のタイプは VARCHAR(1) とする

• 索引には単一文字 T または F が格納される

• 例

• 利点

• fn:existsを使用する照会で、索引を使用できることによりパフォーマンスが向上する

XQUERY db2-fn:xmlcolumn('COMPANY.COMPANYDOCS')

/company/emp/name[fn:exists(middle)];

CREATE INDEX empindex on company(companydocs)

GENERATE KEY USING XMLPATTERN

'/company/emp/name/fn:exists(middle)' AS SQL VARCHAR(1);

Page 45: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 45

テキスト全文検索機能

- TextSearch機能強化 -

Page 46: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 46

テキスト全文検索機能の必要性

• テキスト全文検索機能って何のためのもの?

問題例)

・LIKE検索では、件数、データ容量が増えてくると比例して遅くなる

・索引を作成しても前方一致以外の場合は、索引を全件参照するので遅い

・あいまい検索はできない 例えば、ise(小文字)など

・非定型のテキスト、半定型のXML文書内の語句を検索したいが、全体にリレーショナル索引を張ることはできない

データベース

1 A 001

2

3

4 フェレット 011

5 出目金 019

1 箱崎システム(株) 9876

2 株式会社幕張商事 2563 3 (株)ISEシステムズ 4521

4 レストラン幕張 1801

5 幕張観光 019

ISEという会社の情報を探したいけれど、(株)ISE?,

ISE(株)?, ISEシステム?

SELECT * FROM 会社表

where 会社名 LIKE „%ISE%‟

そこで、テキスト全文検索機能の出番!

Page 47: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 47

テキスト全文検索機能の特長

• 表に格納された文書データを、SQLでテキスト検索するためのオプション機能

• テキスト内のどこに検索語句が出現してもよい

• 大文字/小文字、全角/半角などを同じ文字列として検索可能

• あいまい検索により、中黒の有無など表記のゆれを吸収可能

• 同義語の登録により、同義語検索が可能

テキスト検索のパフォーマンスの向上/安定化

標準SQLでは対応の難しいあいまい検索などを簡単に実現可能

Page 48: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 48

DB2テキスト全文検索機能

• テキスト全文検索機能の2つの局面

• 索引作成:表のテキスト列の内容をparse(=tokenize)し、全文検索用テキスト索引を作成する

• 検索:SQL中からテキスト検索を行う

DB 表

PK ・・ Text

1 Text Search is an

extension for DB2.

2 Kagawa moves to

Manchester United.

3

PK キーワード(token)

1 Text search extension

DB2

2 Kagawa move

Manchester United

全文検索用テキスト索引

テキスト全文検索

索引

作成

テキスト検索 DB2

“Manches

ter”を含むレコードは?

select * from Table1 where contains(TEXT, '"Manchester"')=1

あらかじめ作成された全文検索索引を

使用することにより、高速な検索を提

供する

検索

Page 49: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 49

SQL vs テキスト全文検索

• SQLでの検索

• LIKE句

• 索引総スキャン

• LIKEでの後方一致、中間一致はパフォーマンス劣化の要因になる

• テキスト全文検索

• CONTAINS関数などSQLを拡張

• テキスト構文解析(Parse)された索引を使用するため検索パフォーマンスがよい

• スコア・ファジー検索などの高度な検索機能あり

• テキスト索引の運用が必要

• リアルタイムでの検索は不可

• 索引の更新タイミングは、通常DBレコードの更新と同期しない

Page 50: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 50

DB外の検索エンジン vs DB2テキスト全文検索

• DB外の検索エンジン(OmniFindなど)

• 多種多様のデータソース、文書タイプを検索可能

• CrawlerとIndexerがインデックスを作成

• 高品質な分かち書き処理(形態素)

• ハイパフォーマンス、大規模索引への対応

• セキュリティ強化

• ランキング、など高度な検索が可能

• DBと組み合わせるためにはDB外エンジンでの検索結果とDBのアクセス(SQL)を組み合わせる必要がある

• DB2テキスト全文検索

• 対象はDB2のみ

• DB2ネイティブの機能

• 限られた文書タイプのみを対象

• SQLで検索できる

Page 51: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 51

IBMのテキスト全文検索の歴史

1997 2000 2001 2002

TE(RDBエンジン+GTR)

NSE

TIE

NSE

全文検索エンジンは大和研究所開発の

GTR

検索結果をキャシュに載せる

APIはSP

APIはSQL

スカラー関数(containsなど)

旧NSE, TIEの機能を統合

V5

V7

V7.2

V8.1&V8.2&V9

×

TE:テキストエクステンダー

TIE:テキスト情報エクステンダー

NSE: Net Search Extender

2008 2012

Text Search V9.5FP1

V10で

非推奨

V10.1

Page 52: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 52

DB2 Text Searchの特徴

• DB2に統合された検索エンジン

• DB2本体のインストーラーでインストール可能

• 形態素/N-gramによるParsingの選択が可能

• 複数の文書フォーマットのサポート

• XML、TEXT、HTML

• DB2のクエリーとの統合

• SQLでの検索

• XQueryでの検索

• XPathライクの位置指定

• 属性の値比較

• DB2オプティマイザーによる最適化

• ストアード・プロシージャーによる管理

• テキスト索引の作成、更新、削除など

• JDBC Type4で管理可能

Page 53: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 53

Parser(構文解析)

• Parserとはトークンパーシングを意味する

• Tokenizeとも呼ばれる

• 英語など、分かち書き(単語の間がスペースで区切られている)の言語では、索引に登録するべき文字列(単語)を決めるのは容易

• 日本語や中国語のように、単語の区切れ目が機械的には分からない言語では、コンピューターが何らかの処理を施して単語の区切れ目を決める必要がある

• 著名な検索エンジンであっても、構文解析で日本語対応していなければ日本語のキーワード抽出は難しい

参考

Page 54: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 54

様々な構文解析の方式

方式 概要

文字成分表方式 文字成分表を使って絞り込み候補を絞って行う解析方式

形態素解析方式 意味を持つ最小構成の「形態素」に分解して解析を行う方式。表記ゆれや語尾変化などに対応

分かち書き方式 形態素解析の1形態。自立語と付属語を考慮して分解するため、より自然語処理に向く

N-Gram方式 先頭からN文字の文字列を1単位として扱い、それを1文字づつずらしてIndex登録を行う高速な方式

パトリシアツリー方式 文書のすべての文字から始まる文末までの文字列を半無限部分文字列としてIndex化する方式

概念検索方式 Webページの内容やコンテンツの話題について、類似している者を探し出す方式。レコメンドなどに採用

参考

Page 55: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 55

形態素解析

• 形態素解析とは、ある文章を単語に分割する処理を指す

• 例えばMeCabという形態素解析エンジンでは、「我輩は猫である。」という文は「我輩/は/ 猫/で/ある/。」に分割される。このように日本語として

自然に分割されるために、特定の単語を検索する用途には非常に向いている

• ただし、解析には 形態素解析エンジンの他に、品詞や活用などの情報を含

む日本語辞書が必要となる。したがってこの辞書に記述されていない単語(流行語など)の検出は困難となる。

• 形態素解析エンジンは下記のものが知られている

• MeCab http://mecab.sourceforge.jp/

• ChaSen http://chasen.naist.jp/hiki/ChaSen/

• JUMAN http://nlp.kuee.kyoto-u.ac.jp/nl-resource/juman.html

• KAKASI http://kakasi.namazu.org/

Page 56: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 56

N-gram方式

• N-gram方式とは、対象の文章をある数Nごとに機械的に分割して文章を解析する手法

• 例えば「我輩は猫である。」をN=2で解析すると、「我輩、輩は、は猫…」のように分割される。この場合N=2で、Bi-

gram方式と呼ばれる

• この方式の場合、「東京都」を含む文章から「京都」で検索するとヒットしてしまったり、「都」で検索することが困難であるという問題がある

• 一方、辞書を必要とせず、処理が高速であるという長所もある

Page 57: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 57

Lucene

• 代表的なオープンソース全文検索エンジン

• Javaで書かれた全文検索APIで、Jakartaプロジェクトによって開発

• ラ イセンスはApache License2.0

• http://lucene.apache.org/

• インデックスは独自のファイル形式に保存する

• 海外で開発されているため、そのままでは日本語に対応していないが、日本語形態素解析エンジンと組み合わせて日本語対応可能

• Senというライブラリを追加利用することにより、日本語の形態素解析を利用した検索が可能となる。Senは、形態素解析エンジンMeCabのJavaポーティング。

• Javaの開発環境さえあれば、独自のアプリケーションに簡単に全文検索機能を追加することが可能。

参考

Page 58: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 58

DB2 Text Searchの構成(DB2統合構成)

DB2インスタンス

Text Search Server

DB

テキスト 索引

ユーザー表

TSカタログ表

create index コマンドで作成

1インスタンス に1つ構成

要TCP/IPポート

・クエリー ・管理コマンド

Enable databaseコマンドで作成

ファイルシステムに格納

Page 59: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 59

DB2 Text Searchの構成選択肢 1. 統合 DB2 Text Search サーバーのセットアップ

2. スタンドアロン DB2 Text Search サーバーのセットアップ

3. DPFでのスタンドアロン DB2 Text Search サーバー・セットアップ

Page 60: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 60

DB2 Text Search概要(使用の流れ)

db2start db2ts start for text

create db db2ts enable db for text

create table db2ts create index for text

データ挿入、クエリ

db2ts update index for text

staging表

インスタンス、Text Search Server開始 NSEとの同居可能

DB作成、DBでText Search有効化 NSEが有効なDBでTSの同時enable可 TSが有効なDBでNSEの同時enable不可

表作成、テキスト索引作成 要Primary Key

データ挿入(staging表に挿入される) *MQTを使用する方法もあり

クエリ(contains関数など)

テキスト索引更新(差分) staging表から非同期による更新

基本的にNSEと同様

db2icrt configTool

インスタンス作成、Text Search構成 Text Search(TS)構成にはdb2setupやconfigToolを使用

trigger

Page 61: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 61

Text Searchの構成方法

1. 導入時に自動的に構成する

2. 導入後にインスタンスに対して構成する

• Windowsでは、db2icrt, db2iupdtで/j “TEXT_SEARCH”

パラメータを指定してText Searchの構成が可能

• Linux, UNIXでは、db2isetupでText Searchの構成が可能

• Linux, UNIXでは、db2icrt, db2iupdtでのText Search構成はできない

3. configToolコマンドを使って構成する

* Text SearchはzLinuxでサポートされないので注意!

参考

Page 62: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 62

DB2 Text Searchの管理コマンド(代表例) • Text Search Serverの開始/停止

• db2ts start for text

• db2ts stop for text

• DBのEnable/Disable

• db2ts enable database for text

• db2ts disable database for text

• 索引の作成/変更/更新/削除

• db2ts create index indname for text on tabname(col)

• db2ts alter index indname for text update frequency none

• db2ts update index indname for text

• db2ts drop index indname for text

• コマンド・ロックの消去(管理コマンドの不正終了で残ってしまったロックを消去)

• db2ts clear command locks for index indname for text

• イベントの消去

• db2ts clear events for index indname for text

• 表削除やDB削除により残ってしまったテキスト索引の消去

• db2ts cleanup for text

Page 63: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 63

DB2 Text Searchによる検索

• CONTAINS関数

• SELECT author, story FROM books WHERE CONTAINS (story, „“cat”, RESULTLIMIT=10‟) = 1

• SOCRE関数

• with temptable (col1,score) as (select col1,score (col2,'"XML"') from tabj) select * from temptable where score > 0 order by score desc ;

• テキスト検索索引を検索し、列内の他の文書と比較した場合の関連性スコアを戻す

• CONTAINS関数(XML文書内)

• SELECT chapter FROM books WHERE CONTAINS(chapter,'@xpath:''/chapter/title[. contains ("DB2")]''') = 1

• 属性に対して、値の比較が可能(<、>、=、>=、<=の使用)

• ".."(一つ上の階層)や"*"(アスタリスク)は使用できない。"//"は使用可

• db2-fn:xmlcolumn-contains関数(XQuery)

• @xpathの部分はCONTAINS関数と同じ

• xquery for $i in db2-fn:xmlcolumn-contains('BOOKS.CHAPTER','@xpath:''/chapter[./title contains("DB2") and ./@number <= 10]''') return $i

Page 64: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 64

シノニム辞書の使用

• 異音同義語の追加が可能

• XMLにより辞書を作成

• ツールを使用して辞書を登録

• synonymTool importSynonym -synonymFile d:¥Shared¥syn1.xml -collectionName

TSINST_SAMPLE_TS574301_0000 -replace true -configPath "C:¥Documents and Settings¥All

Users¥Application Data¥IBM¥DB2¥DB2COPY2¥TSINST¥db2tss¥config"

• クエリー時にシノニム辞書使用を指定

• select id from db2inst1.testtable where contains(item,'@xpath:''/root/aaa[.contains("スイーツ

")]''','SYNONYM=ON')>0;

<?xml version="1.0" encoding="UTF-8"?> <synonymgroups version="1.0"> <synonymgroup> <synonym>ball</synonym> <synonym>globe</synonym> <synonym>sphere</synonym> <synonym>orb</synonym> </synonymgroup> <synonymgroup> <synonym>スイーツ</synonym> <synonym>スウィーツ</synonym> </synonymgroup> </synonymgroups>

Page 65: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 65

Net Search Extender(NSE)との比較

• DB2 Text Searchが優れている点

• 形態素解析あり

• XML検索時の属性の値比較が可能( ./@id >= 10 )

• ストアード・プロシージャーによる管理コマンド発行

• NSEのみでサポートされる機能

• Highlighting (HIGHLIGHT関数)

• ストアード・プロシージャー検索

• ドキュメントモデル

• View、Nicknameへの対応

• 事前ソート指定

Page 66: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 66

DB2 V10.1におけるText Searchの新機能(1) • 検索オプションの追加

• Fuzzy

• proximity(近接検索)

• A proximity search retrieves documents containing search words which are located within a

specified distance from each other.

同じ文または同じ段落内でのワードに対する近接検索(NSE)

• queryExpansionLimit構成パラメータ

• ワイルドカード検索の展開上限値の設定

• 形態素解析のサポート

• Chinese, Japanese, Korean

• サポートされる構成の拡張

• DPF

• 索引はパーティション毎に分割される

• パーティション表

• 索引は一つのパーティション表全体で単一の索引となる

• MDC

• DPF, パーティション表, MDCの組み合わせ可

Page 67: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 67

DB2 V10.1におけるText Searchの新機能(2)

• 新しい導入形態

• スタンドアローンText Searchサーバー

• Text Search専用のサーバーを持つことにより

• より高負荷な状況での使用が可能

• Text Search独自での資源の管理とチューニングの実施

• ログ、トレースの管理

• DPF環境では、負荷分散のためにスタンドアローン構成が適切な場合がある

• Text Search用新管理者

• Instance ownerに依存しない

• Fence userがprimaryグループである必要はない

• Text Search Administrator (SYSTS_ADM) – データベースレベルの権限

• Text Search Manager (SYSTS_MGR) – 索引の権限

• Text Search User (SYSTS_USR) – ユーザー権限(Text Searchカタログにアクセスできる)

• 管理タスクスケジューラ

• 索引更新

Page 68: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 68

まとめ

Page 69: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 69

まとめ:ビッグデータを含めた多様なデータへの対応(1)

• Federation機能拡張

• pureScaleサポート

• Three Part NameによるOracle互換性および使い易さの向上

• Netezzaへのサポートの強化

• Hadoopへの対応

• Java ジェネリック 表関数によりHadoopとDB2を連携

• Javaジェネリック表関数では表関数の作成時ではなく、実行時に出力フォーマットが決定できるように機能を強化

• 様々な出力形式に対応するための労力の軽減

• エンドユーザーとアプリケーションが、様々なリソースからデータを取り込んで、複雑なレポートや分析を行う際の容易性が向上

Page 70: ビッグデータを含めた多用なデータへの対応 · •RDFアプリケーション開発のサポート •pureXML機能強化 •テキスト全文検索機能 – Text

© 2012 ISE Corporation 70

まとめ:ビッグデータを含めた多様なデータへの対応(2)

• RDFアプリケーション開発のサポート

• RDFトリプルのためのストアの提供

• SPARQLのサポート

• pureXML機能強化

• 以下によるパフォーマンス機能強化

• バイナリ形式によるデータの伝送

• 索引データタイプの追加

• 関数索引のサポート

• テキスト全文検索機能 –TextSearch

• 形態素解析による索引付けが可能

• 非定型のテキストデータでは全文検索機能は重要