Slide 1

Slide 1 text

Gluesync

Slide 2

Slide 2 text

RDBMSとNoSQL • 関係性のあるデータ>構造化データ • SQLによる一貫性を保った複雑な処理が可能 • データ量に依存して性能劣化 • シンプルなデータ>半構造化データ • SQL不要で取り扱いが容易 • データ量が増えても性能劣化が起きづらい

Slide 3

Slide 3 text

両方のメリットを活かすために • データを同期 基幹系システム 分析系システム

Slide 4

Slide 4 text

データ構造を意識した連携が必要 • RDBMS:データを正規化 • NoSQL:非正規化(単純化)し、アプリケーションが使いやす い構造へ 複雑なSQLクエリで抽出 簡単なクエリで必要なドキュメントを参照 基幹系システム 分析系システム

Slide 5

Slide 5 text

Gluesyncで対応可 NoSQL NoSQL SQL SQL NoSQL NoSQL

Slide 6

Slide 6 text

対応RDBMS/NoSQL:SQL>NoSQL SQL NoSQL

Slide 7

Slide 7 text

対応RDBMS/NoSQL:NoSQL>SQL SQL NoSQL

Slide 8

Slide 8 text

対応RDBMS/NoSQL:NoSQL>NoSQL NoSQL NoSQL

Slide 9

Slide 9 text

変更追跡でリアルタイム同期 • 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:レプリケーション スロット テクノロジ

Slide 10

Slide 10 text

変更追跡でリアルタイム同期 • NoSQLのネイティブ機能 • DynamoDB:DynamoDB Streams • MongoDB:Change Streams機能 • Aerospike :ESPコネクタ • Couchbase: Eventing サービス • Apache HBase:scan機能

Slide 11

Slide 11 text

クラウドネイティブで動作 • DockerやKubernetes上で動作 • オンプレ、クラウド問わず実行可能

Slide 12

Slide 12 text

クラウドネイティブで動作 • ステートレスなコンテナで提供 • 処理したトランザクションIDなどはソース、ターゲットで保持 GS管理テーブル GS管理ドキュメント

Slide 13

Slide 13 text

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 } • ソース/ターゲット接続設定 • エンティティ設定 • 同期対象のテーブル • データモデリング • 同期設定 • 変更履歴の保持 • 管理用テーブルのプレフィックス • 最大同時処理数

Slide 14

Slide 14 text

柔軟なデータモデリング •テーブルのレコードをそのままドキュメントへ •SQLクエリ結果をドキュメントへ •ネスト構造へデータモデリング SQLクエリ

Slide 15

Slide 15 text

テーブルをそのままドキュメントへ "sourceEntities": { "tableSync": { "schema": "dbo", "table": "DRIVERS", "type": "drivers", "scope": "data" } }

Slide 16

Slide 16 text

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" } },

Slide 17

Slide 17 text

SQLクエリ結果をドキュメントへ { "ID": 111, "注文番号": "SO-97411111", "注文日時": "2021-10-30T02:06:03", "お客様名": "クライム 太郎", "ふりがな": "くらいむ たろう", "メールアドレス": "[email protected]", "電話番号": "03-9336-3660", "送り先住所": "東京都中央区日本橋蛎殻町1丁目36−7蛎殻町千葉ビル4F", "担当ドライバー": "クライム配達員", "scope": "data", "type": "INNER_JOIN" }

Slide 18

Slide 18 text

対応コマンド SQLコマンド Gluesyncの互換性 INNER JOIN OUTER JOIN LEFT JOIN WHERE foo + ' ' + barのような文字列連結 * + - /のような算術演算子 UNION 複数エンティティで同じ宛先(type とscope)を使用すると同様の結果 を得られます。

Slide 19

Slide 19 text

ネスト構造へのモデリング

Slide 20

Slide 20 text

"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.注文詳細" } } ] } ] } }

Slide 21

Slide 21 text

ネスト構造へのモデリング { "oh_ID": 107, "注文番号": "SO-!IAMNEW!-03", …省略… "注文詳細": [ { "o_ID": 1010, "数量": 10, "詳細注釈": "コンテナでデプロイ", "a_ID": 5, "商品名": "グルーシンク", "商品説明": "主要RDBMSとNoSQL間でリアルタイムなクラウドネイティブ データレプリケーションを実現" }, {…省略…} ], "scope": "data", "type": "order" }

Slide 22

Slide 22 text

監視、ログ、アラート • Prometheus互換のメトリクスで監視可能 • Logbackでロギング、メールアラート • Java のロギングライブラリ

Slide 23

Slide 23 text

デモ • Docker • SQL Server > Couchbase

Slide 24

Slide 24 text

まとめ •主要SQLからNoSQLへ同期 • データモデリングで半構造化データに変換 •コンテナベース、クラウドネイティブに実行可能 • 次期バージョン2.0ではWeb GUIを追加予定!

Slide 25

Slide 25 text

お問い合わせ Gluesync製品ページ https://www.climb.co.jp/soft/gluesync/ お問合せ先 東京:03-3660-9336 大阪:06-6147-8201 https://www.climb.co.jp/soft/contact/contact.php