23
業務システム RDBなしで 作れるのか? 2016/02/05 14:10-15:30 @C会場

エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

  • Upload
    2t3

  • View
    1.328

  • Download
    0

Embed Size (px)

Citation preview

Page 1: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

業務システムをRDBなしで作れるのか?

2016/02/0514:10-15:30 @C会場

Page 2: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

セッションオーナー紹介《経歴》

ロータス株式会社時代

  - Iris Associates社(ボストン)へ出向

  - Lotus Notesの開発に従事。

アリエル・ネットワーク株式会社時代

  - 創業メンバーとして参加

  - 現在CTO

株式会社ワークスアプリケーションズ時代

  - エグゼクティブフェローを兼任

     ・ 製品横断のパフォーマンス改善

     ・ 開発インフラの改善、

     ・ グローバル採用

     ・ 教育等に従事

【著書】

井上 誠一郎 (INOUE Seiichiro)アリエル・ネットワークス株式会社 CTO 兼 株式会社ワークスアプリケーションズ エグゼクティブフェロー

人工知能型ERP「HUE」開発のアーキテクチャー責任者を務め、グローバルでの開発を指揮

Page 3: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

スピーカー紹介

株式会社ワークスアプリケーションズ所

属。現在は新製品「HUE」のテクノロジー

開発Dept.にて主にバックエンドのチーム

を率いている。

Oracle等のRDBやCassandra等のKVSの知識、クラウドの運用からインフラ、

DevOpsの構築まで様々な業務に携わ

る。

TSUTSUMI Hayatoアプリケーション実践派

2004年より大規模分散作業システムの開発

を始め、複数な分散システムの開発を経験

し、2006年来日。

2009年-2014年、国立情報学研究所で分散

・並列プログラミング分野の学術研究に従

事。

2014年に情報学博士号を取得、同年ワーク

スアプリケーションズに入社し、 Cloud-native基盤システム、特に並列データ処理システ

ムの設計を担当。

研究興味は並列プログラミング言語、関数

型言語、並列アルゴリズム、大規模データ処

理システム等。

Yu Liu理論派

Page 4: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

前提知識

Page 5: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

データベースの指標(1)- データモデル

- クエリ言語

- トランザクション管理

Page 6: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

データベースの指標(2)- ストレージモデル(e.g. row/column/それ以外)- ネットワークモデル(e.g. 分散/非分散。マスタ-マスタ/マスタ-ス

レーブ)

Page 7: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

トランザクション管理とは?

- 障害時回復

- 同時実行性制御

の技術

Page 8: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

障害時回復の技法

- ログ法(e.g. rollback/rollforward, a.k.a. WAL)- シャドーページング

Page 9: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

同時実行性制御の技法

静的

- 依存性解析

動的

- ロックベース

- タイムスタンプベース(e.g. Optimistic Concurrency Control)- コンバージェントベース(e.g. CRDT)

Page 10: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

NoSQLの定義?

- RDBMSでないもの全般

- 暗黙に

- リレーショナル以外のデータモデル

- 分散データベース

- 非ACIDなトランザクション管理(e.g. BASE, Relaxing ACID)

Page 11: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

なぜNoSQL?- 高可用性

- 高スループット性能

- ジオレプリケーション

Page 12: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

ユースケース

Page 13: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Case1 : 給与計算

● 開始時にデータを読んできて、

結果を計算する

● データには締切があり、締切後

のデータがそもそもエラーケース

● 計算は少し遅れても良いが、エ

ラーケースには気付きたい

エラーケース:

● 計算開始後に新しいデータが

入った場合に結果が正しくない

勤怠データ

人事データ

計算式データ

給与計算

Page 14: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Answer1 : 給与計算 実装例 ● データ読み込み時に各データの

Timestampを取得しておく

● 計算終了時に各データの

Timestampを比較

● 読み込んだデータより新しいデー

タが見つかった場合はアラートを

出す

勤怠データ

人事データ

計算式データ

給与計算

Timestamp

Timestamp

Timestamp

Check!

Page 15: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Case2 : 総勘定元帳

● 大量の仕訳を総勘定元帳

に転記していく

● 担当者が勘定科目毎に

チェックを随時行う

● 合計・小計行を表示する

● 反映は遅れても良いが、

表示は遅らせたくない

エラーケース:

● 一つの仕訳が途中で表示

される

Page 16: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Answer2 : 総勘定元帳 実装例

● 一つの総勘定元帳への書

き込みを一箇所に集約し、

書き込まれる順序を制御

する

● 一つの仕訳が正しく転記さ

れたタイミングで画面表示

用データを作成する

Page 17: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Answer2 : 総勘定元帳 実装例

● 一つの仕訳をAtomicな更新

差分として扱う

● 更新差分をマージして表示

● 定期的にマージコストを下げ

るためにまとめる

仕訳 A

仕訳 B

仕訳 C

・・・

Snapshot

仕訳 D

仕訳 E

・・・

Page 18: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Case3 : シーケンス値発行

● システムで一意の番号を採番

していく

● 発行も早い方が良いが、

重複は絶対に避けたい

エラーケース:

● システムで重複した番号が採

番される

Page 19: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Answer3 : シーケンス値発行 実装例

● Lightweight transactionを利

用し、条件付きのステートメン

トを発行する

● 取得に失敗した場合はリトラ

● 全リージョン、全データセン

ターに大してトランザクション

を発行する

Page 20: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Case4 : 在庫管理

● ある品物の在庫数を管理する

● 購入操作時に在庫を確認する

● 複数のユーザーが同時にアクセス

する

● 速度も重要、ある程度ならエラーも

許容できる

エラーケース:

● 在庫が無いのに購入できてしまう

または、在庫があるのに購入でき

ない

Page 21: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Answer4 : 在庫管理 実装例

● ロックテーブルを実装し、ロックが

得られなければリトライ

● ロックテーブルはLightweight Transactionで実装

Page 22: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Case5 : Enterprise Spreadsheets● 一つのSpreadsheetsを複数のユーザー

が相互に編集する

● 速度が重要、同時編集によりデータが失

われた場合、履歴表示可能である

エラーケース:

● 同じセルを複数人が同時に編集する

Page 23: エンジニアCROSS 2016 02-05 業務システムをRDBなしで作れるのか?

Answer5 : Enterprise Spreadsheets● Masterを一つ選出

● 全ての変更はTimestampと共にMasterに送られ、順番に適用される

● Masterに適用された変更は、Slaveに通

知される

● データベースはMasterのみが更新する

Master Slave Slave