Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RDBMSとNoSQLの架け橋に! 新時代のデータ統合、活用を実現する「GlueSync」

Climb
April 26, 2024

RDBMSとNoSQLの架け橋に! 新時代のデータ統合、活用を実現する「GlueSync」

4/25(木) に開催したWebセミナーのプレゼン資料です。
下記で録画も公開しています。
https://www.climb.co.jp/soft/webseminar/2024/0425/

非構造化データを扱うために、NoSQLを利用されているケースは多いかと思いますが、基幹まで含めたデータ分析やデータ統合、他のアプリケーションとの連携など、もう一歩進んだ活用はできていますか?

基幹データとしてRDBMS上にある構造化データをNoSQL上の半構造化データへ連携するためにはデータの特性に合わせたデータモデリングが必要です。

GlueSyncでは主要RDBMS(Microsoft SQL Server、Oracle、DB2、PostgreSQLなど)とNoSQL(Aerospike、Couchbase、MongoDB、DynamoDBなど)間でリアルタイムにデータをレプリケートでき、その際のモデリングも柔軟に行えます。

今回のセミナーでは、このGlueSyncの特長やアーキテクチャなどを解説、実際のデモにて、実際のデータ同期、モデリングの動作をご紹介します。

Climb

April 26, 2024
Tweet

More Decks by Climb

Other Decks in Technology

Transcript

  1. 変更追跡でリアルタイム同期 • Gluesync Data Capture機能によるトリガー方式 • DB2 LUW、Maria DB、MySQL、Sybase •

    Oracle、PostgreSQL(ネイティブでも対応) • データベースのネイティブ機能 • IBM i(AS/400):IBM i ジャーナル API • SQL Server:CDC技術または変更追跡技術 • Oracle:Xstream API • PostgreSQL:レプリケーション スロット テクノロジ
  2. 変更追跡でリアルタイム同期 • NoSQLのネイティブ機能 • DynamoDB:DynamoDB Streams • MongoDB:Change Streams機能 •

    Aerospike :ESPコネクタ • Couchbase: Eventing サービス • Apache HBase:scan機能
  3. JSON形式の構成ファイル { "sourceHost": "192.168.33.15", "sourcePort": "1433", "sourceName": "demo", "sourceUsername": "gs-user",

    "sourcePassword": "P@ssword123", "mssql": { "temporaryTableNamePrefix": "gs", "statePreservationTableNamePrefix": "gs" }, "targetHost": "192.168.33.15", "targetPort": "8091", "targetName": "demo", "targetUsername": "gs-user", "targetPassword": "password", "couchbase": { "useCollections": true }, "sourceEntities": { "tableSync": { "schema": "dbo", "table": "DRIVERS", "type": "drivers", "scope": "data" } }, "sourceChangeRetention": 5, "copySourceEntitiesAtStartup": true, "maxItemsCountPerTransaction": 100, "maxMigrationItemsCountPerIteration": 20000 } • ソース/ターゲット接続設定 • エンティティ設定 • 同期対象のテーブル • データモデリング • 同期設定 • 変更履歴の保持 • 管理用テーブルのプレフィックス • 最大同時処理数
  4. SQLクエリ結果をドキュメントへ "sourceEntities": { "INNER_JOIN": { "type": "INNER_JOIN", "schema": "dbo", "scope":

    "data", "query": "SELECT o.ID, o.注文番号, o.注文日時, c. 氏名 as お客様名, c.ふりがな, c.メールアドレス, c.電話番号, a.都道府県 + a.市区町村 + a.番地 as 送り先住所, d.姓 + ' ' + d.名 as 担当ドライバー FROM dbo.注文ヘッダー o INNER JOIN dbo.顧客情報 c on c.ID = o.顧客ID INNER JOIN dbo. 住所 a on a.ID = o.住所ID INNER JOIN dbo.ドライバー d on d.ID = o.ドライバーID where o.ステータス = 1" } },
  5. SQLクエリ結果をドキュメントへ { "ID": 111, "注文番号": "SO-97411111", "注文日時": "2021-10-30T02:06:03", "お客様名": "クライム

    太郎", "ふりがな": "くらいむ たろう", "メールアドレス": "[email protected]", "電話番号": "03-9336-3660", "送り先住所": "東京都中央区日本橋蛎殻町1丁目36−7蛎殻町千葉ビル4F", "担当ドライバー": "クライム配達員", "scope": "data", "type": "INNER_JOIN" }
  6. 対応コマンド SQLコマンド Gluesyncの互換性 INNER JOIN OUTER JOIN LEFT JOIN WHERE

    foo + ' ' + barのような文字列連結 * + - /のような算術演算子 UNION 複数エンティティで同じ宛先(type とscope)を使用すると同様の結果 を得られます。
  7. "sourceEntities": { "order": { "type": "order", "scope": "data", "dataModeling": [

    { "level": 1, "name": "注文", "tables": [ { "table":"dbo.注文ヘッダー", "keys": { "ID":"oh_ID" }, "fields": { "ID":"oh_ID", "注文番号": "注文番号", …省略… "level": 2, "name": "注文詳細", "tables": [ { "table": "dbo.注文詳細", "keys": { "ID": "o_ID" }, "fields": { "ID": "o_ID", "数量": "数量", "注釈": "詳細注釈" }, "alias": "o", "join": { "with": "dbo.注文ヘッダー" } }, { "table": "dbo.商品情報", "keys": { "ID": "a_ID" }, "fields": { "ID": "a_ID", "商品名": "商品名", "説明": "商品説明" }, "alias": "a", "join": { "with": "dbo.注文詳細" } } ] } ] } }
  8. ネスト構造へのモデリング { "oh_ID": 107, "注文番号": "SO-!IAMNEW!-03", …省略… "注文詳細": [ {

    "o_ID": 1010, "数量": 10, "詳細注釈": "コンテナでデプロイ", "a_ID": 5, "商品名": "グルーシンク", "商品説明": "主要RDBMSとNoSQL間でリアルタイムなクラウドネイティブ データレプリケーションを実現" }, {…省略…} ], "scope": "data", "type": "order" }