nosql bigtable and azure table

61
株株株株株株株 株株株株 Google の Big Table の Azure Table ののの ののののののののののの ののののののの のののの ののの のののののののののののののののののの のの のの の

Upload: takekazu-omi

Post on 10-May-2015

9.158 views

Category:

Documents


3 download

DESCRIPTION

NoSQLの中でGoogle App Engine データストアとWindows Azure TableはACIDトランザクションのサポート、PaaSでのサービスなどの面で似たような立ち位置にある。その比較と、事例を紹介する

TRANSCRIPT

Page 1: NoSQL Bigtable and Azure Table

株式会社リード・レックス

Google の Big Table と Azure Table の特性比較と失敗しない使い方

株式会社リード・レックス開発部 インターネットソリューショングループ 

部長 近江 武一

Page 2: NoSQL Bigtable and Azure Table

NoSQL の中で Google App Engine Datastore( 以下 GAE Datastore) とWindows Azure Table は ACID トランザクションのサポート、 PaaS でのサービスなどの面で似たような立ち位置にある。その比較と、事例を通じ失敗しない使い方を紹介する

概要

04/11/2023 (C) ReedRex Co,. LTD. 2

Page 3: NoSQL Bigtable and Azure Table

TRENDS

04/11/2023 (C) ReedRex Co,. LTD. 3

Page 4: NoSQL Bigtable and Azure Table

1. ここ 20 年の間で、データの永続化手段は、 RDBMS とファイルシステムの2つに集約

2. 扱うデータ量が急激に増えた。 100 万超のサービスの通常化、 20 年前なら Yahoo Japan クラスがゴロゴロしている

3. コモディティ化されたハードウェアによって急激な単価低下( CPU 、 Memory 、 HDD) が起きた

4. クラウドの台頭(安価なハードウェアを大量に用意するタイプのパブリッククラウド)

ここ 20 年ほどの間の流れ

04/11/2023 (C) ReedRex Co,. LTD. 4

Page 5: NoSQL Bigtable and Azure Table

SQ

L

ファイルシステム

永続化ストレージの 2 極化

構造化データ(関係モデル)

トランザクション

柔軟な問い合わせ

データの一貫性

セキュリティ

可用性

コスト

大容量

単純さ

扱い易さ

スケーラビリティスループット

04/11/2023 (C) ReedRex Co,. LTD. 5

Page 6: NoSQL Bigtable and Azure Table

JPIX Backplane のトラフィック遷移 2002-2012

04/11/2023 (C) ReedRex Co,. LTD. 6

Page 7: NoSQL Bigtable and Azure Table

• 1992 年Windows 3.1, OS/2 2.0, 486 DX2 66MHz, HDD 100MB

• 2012 年Windows 7, Mac OSX, Linux, 2GHz Multi Core, HDD 数 100MB~

• パブリッククラウド -- Amazon, Google, Azureコモディティ化された低価格なハードウェアを大量に用意してサービスを提供

ハードウェアのコモディティ化

04/11/2023 (C) ReedRex Co,. LTD. 7

Page 8: NoSQL Bigtable and Azure Table

04/11/2023 (C) ReedRex Co,. LTD. 8

Page 9: NoSQL Bigtable and Azure Table

• 永続化ストレージモデルの停滞

• 処理データ量の増大

• ハードウェアのコモディティ化

Gap の増大

04/11/2023 (C) ReedRex Co,. LTD. 9

Page 10: NoSQL Bigtable and Azure Table

狭間を埋める NoSQLSQL Alternative としての NoSQL

04/11/2023 (C) ReedRex Co,. LTD. 10

Page 11: NoSQL Bigtable and Azure Table

SQ

L

ファイルシステム

Gap を埋める NoSQL

構造化データ(関係モデル)

トランザクション

柔軟な問い合わせ

データの一貫性

セキュリティ

可用性

コスト

大容量

単純さ

扱い易さ

スケーラビリティ

NoSQL A

NoSQL B

NoSQL C

04/11/2023 (C) ReedRex Co,. LTD. 11

Page 12: NoSQL Bigtable and Azure Table

• 「 SQL 」→ SQL を問い合わせに使うRDBMS• 現在の関係データベース管理システムRDBMS は機能が豊富• 関係モデル• Codd's 12 Rules

• Transaction 処理• ACID トランザクション、並行処理時での分離

• Query の最適化• データの完全性• 物理・論理データの独立性• セキュリティ• リカバリー

SQL vs NoSQL ?

04/11/2023 (C) ReedRex Co,. LTD. 12

Page 13: NoSQL Bigtable and Azure Table

• 用途を限定すれば、 SQL の全機能はいらないのでは?

• 使わない機能に払っている隠れたコストがある

NoSQL は、 SQL 以外の代替手段を考えようというムーブメント

Alternative SQL としてのNoSQL

04/11/2023 (C) ReedRex Co,. LTD. 13

Page 14: NoSQL Bigtable and Azure Table

• Write Op の同期性• DISK や Replication 先に同期で書くか、• ジャーナルログを持つか• 耐障害性• トランザクションのレベル• 複数同時アクセス時の一貫性があるか• Query の柔軟性がどこまであるのか• 可用性、対障害性をどう考えるか• スケーラビリティをどう担保するか

NoSQL もいろいろある

04/11/2023 (C) ReedRex Co,. LTD. 14

Page 15: NoSQL Bigtable and Azure Table

Bigtable/Azure Table

MongoDB

SQ

L

Gap を埋める NoSQL

構造化データ(関係モデル)

トランザクション

柔軟な問い合わせ

データの一貫性

セキュリティ

可用性

コスト

大容量

単純さ

扱い易さ

スケーラビリティ

パフォーマンス

04/11/2023 (C) ReedRex Co,. LTD. 15

Page 16: NoSQL Bigtable and Azure Table

• Bigtable-like• 動機:Googleの検索、gmail など

• Pros:大量データの保持、トランザクション• Cons:高レイテンシー、• Casandra• 動機:Facebook で検索のために開発• Pros:大量データの保持、リアルタイムな更新、結果整合性• Cons:一貫性、トランザクション

• MongoDB• 動機:DoubleClick のメンバーが中心となって開発• Pros:Read パフォーマンス、柔軟な Index,Query柔軟性• Cons:一貫性、トランザクション

典型的な例

04/11/2023 (C) ReedRex Co,. LTD. 16

Page 17: NoSQL Bigtable and Azure Table

分散ストレージ、トランザクション処理、 K/V Store1. 複数エンティティのトランザクション処理2. 高いスケーラビリティ3. 高いコンカレンシー4. 貧弱な Query5. 書き込みは DISK と同期、 replication 先も同様6. レイテンシー 読み書きは、 20-30ms のレイテン

シー

例 : Bigtable/Azure Table

04/11/2023 (C) ReedRex Co,. LTD. 17

Page 18: NoSQL Bigtable and Azure Table

読み込み性能に特化したドキュメント指向の NoSQL1. 読み込みは、 memcached なみ2. 柔軟な Query ( Index あり)3. 書き込みは、 Disk と同期しない4. 書き込みは、同時実行15. リプリケーションは非同期のみ6. トランザクションは、同一ドキュメントのみ7. Shading は、 migrate  コストが高い8. Shade をまたがった Query はできない。

例: MongoDB

04/11/2023 (C) ReedRex Co,. LTD. 18

Page 19: NoSQL Bigtable and Azure Table

GAE Datastore/Azure Table

注目すべき特性

04/11/2023 (C) ReedRex Co,. LTD. 19

Page 20: NoSQL Bigtable and Azure Table

とても似てる• GAE Datastore • Google App Engine Datastore, Bigtable が

ベース• Windows Azure Table• Microsoft の実装の Bigtable

• HBase • Bigtable clone 、 Apache HBase

Bigtable-like / GAE Datastore, HBase, Azure Table

04/11/2023 (C) ReedRex Co,. LTD. 20

Page 21: NoSQL Bigtable and Azure Table

1. 分散データストア2. Key/Value Store3. トランザクション(制限あり)4. 追記型( LSM-tree)5. 複数ストレージへの書き込みでバックアップ

を作成している6. データセンターを跨ったリプリケーションを

している

GAE Datastore/Azure Table 共通の特徴(1)

04/11/2023 (C) ReedRex Co,. LTD. 21

Page 22: NoSQL Bigtable and Azure Table

1. 複数エンティティのトランザクション処理2. 高いコンカレンシー3. 書き込みは DISK と同期、 replication 先

も同様4. 高いスケーラビリティ5. 高いレイテンシー6. 制限された Query

GAE Datastore/Azure Table 共通の特徴(2)

04/11/2023 (C) ReedRex Co,. LTD. 22

Page 23: NoSQL Bigtable and Azure Table

基本構成Azure Table は、 Bigtable と GFS の組み合わせに類似している。

(1) GFS ではレプリカ間の緩やかな整合性が許可され、すべてのレプリカのビット単位の同一性を保証していないが、 Azure Table はこれを保証

(2) Bigtable は tablet の書き込みの コミット ログを 2 つの GFS ファイルに並行して書き込むことで GFS の障害を回避。Azure Table では Stream Layer の Journaling で耐障害性を担保

Bigtable と Azure Table の基本の比較

04/11/2023 (C) ReedRex Co,. LTD. 23

Page 24: NoSQL Bigtable and Azure Table

04/11/2023 (C) ReedRex Co,. LTD. 24

Page 25: NoSQL Bigtable and Azure Table

• 分散ストレージ vs. トランザクション 同一ロケーションのトランザクションが基本分散トランザクションはコストが高い(☓Azure Table)

• 高コンカレンシー vs. 高レイテンシー複数のリクエストを同時に発行して処理全体の時間を短縮

ポイント

04/11/2023 (C) ReedRex Co,. LTD. 25

Page 26: NoSQL Bigtable and Azure Table

どちらも、 Entity Group Transaction と呼ばれるトランザクションをサポート• GAE Datastore

同一 Entity Group に属する複数の Entity をトランザクション処理可能

• Azure Table同一 Table, PartitionKey のデータは、 トランザクション処理可能

トランザクション

04/11/2023 (C) ReedRex Co,. LTD. 26

Page 27: NoSQL Bigtable and Azure Table

データの配置のモデルが重要分散ストレージにどのようにデータを配置するか。分散トランザクションにしないため、同じロケーションであることが必要

• Bigtableエンティティ作成時に親となるエンティティを決めて、Entity Group を作成。同一Entity Groupは、同じロケーションに配置される。

• Azure Tableエンティティ、作成時に、Table, PartitionKey で指定。両者が同じエンティティは、同じロケーションに置かれる。

Data Location – 配置

04/11/2023 (C) ReedRex Co,. LTD. 27

Page 28: NoSQL Bigtable and Azure Table

ロケーションが違うと、一貫性の欠如の問題が発生する(結果整合)• GAE Datastore

結果整合になっても機能を提供す• secondary index, cross group transaction

• Azure TableCase by case なので、アプリケーションで実装してもらう。

重要

04/11/2023 (C) ReedRex Co,. LTD. 28

Page 29: NoSQL Bigtable and Azure Table

相違点Google App Engine Datastore と、 Azure Table の違い

04/11/2023 (C) ReedRex Co,. LTD. 29

Page 30: NoSQL Bigtable and Azure Table

1. Secondary index別記

2. Cross group transactionGAE Datastoreだけにある。参加できるグループは5つまで

3. 3. Backup/restoreGAE Datastoreだけにある。

4. 4. Transactional Task EnqueuingGAE Datastoreだけにあるhttps://developers.google.com/appengine/docs/go/datastore/transactions?hl=ja#Transactional_Task_Enqueuing

5. 分離と整合性別記

5 つの違い

04/11/2023 (C) ReedRex Co,. LTD. 30

Page 31: NoSQL Bigtable and Azure Table

GAE Datastore ではカラムの属性で検索する場合にIndex が作成されるが、 Azure Table ではストレージでIndex を作成する機能は無い• GAE Datastore

トランザクションに癖があるhttps://developers.google.com/appengine/articles/transaction_isolation

• Windows Azure自作が必要。作ってみると GAE Datastore と同じような制限が出てしまう。

Property で検索

04/11/2023 (C) ReedRex Co,. LTD. 31

Page 32: NoSQL Bigtable and Azure Table

• GAE Datastore同一 Entity Group内では同時には1つのトランザクションしか実行されない。同一Group内は分離レベル SERIALIZABLE

• Azure Table 同一 Table, Partition Key 内のトランザクションはスナップショットアイソレーションで実行。分離レベル READ COMMITTED

Entity Group 内の並列性

04/11/2023 (C) ReedRex Co,. LTD. 32

Page 33: NoSQL Bigtable and Azure Table

事例

04/11/2023 (C) ReedRex Co,. LTD. 33

Page 34: NoSQL Bigtable and Azure Table

1000 万ユーザーを越えるスケールを想定して ID/課金管理のシステムを Windows Azure Table で構築クラウド環境の利点を生かして、上記想定スケールでのパフォーマンステストを実施

某社スマートフォン向け ID/課金管理 プラットフォーム

04/11/2023 (C) ReedRex Co,. LTD. 34

Page 35: NoSQL Bigtable and Azure Table

Azure Table3つの魅力

1. PaaS(Platform as a Service)使った分だけ従量制で課金、インストール、運用の手間が無い必要に応じて任意のスケールテストが可能常時3台のバックアップと自動フェイルオーバー

2. 一貫性保障の構造化データストアトランザクション処理をサポート高いスケーラビリティ

3. 低コスト¥0.88/ストレージ トランザクション 10,000 回¥10.93/GB/月

© Reed Rex Corp. 35

Page 36: NoSQL Bigtable and Azure Table

単一テーブルに複数クラスを入れる

データモデル ー 方針

04/11/2023 (C) ReedRex Co,. LTD. 36

Table Name

内容

MetaData オブジェクトのメタデータ(予約)Data オブジェクトのデータIndex インデックスLog APIログなどのデータ

Page 37: NoSQL Bigtable and Azure Table

• Person, Friends, Payments などのアプリケーションのファーストクラスオブジェクトは Data に入る

• Data内には複数の Class のインスタンスが入るので、Type で区別を付ける (Type は、 Rowkey の prefix に )

• Index には、 Entity Group を跨った secondary indexを入れる。注:同一 Entity Group 内に入る Index は Dataへ

• Log は、 API のログなどログデータを年月をキーにして入れる。

データモデル ー データの格納

04/11/2023 (C) ReedRex Co,. LTD. 37

Page 38: NoSQL Bigtable and Azure Table

• 関連性の高いデータが同一 Entity Group になるようにする。

• Entity Group=分散の単位• Entity Group が大きいと上手く分散されない• Entity Group が小さすぎると、分散トランザ

クションが頻発してパフォーマンスが出ない• Entity Group の決め方が重要

Entity Group とは?

04/11/2023 (C) ReedRex Co,. LTD. 38

Page 39: NoSQL Bigtable and Azure Table

• Entity Group=同一テーブル、 Partitionkey• ユーザー毎に Partitionkey を決めて、

「 Table 」 Data に入れる• ユーザー内の処理はトランザクションで処理、ユーザー間の処理は分散トランザクションで処理

※コンシューマー向けのシステムでは最初に検討すべきパターン

Entity Group

04/11/2023 (C) ReedRex Co,. LTD. 39

Page 40: NoSQL Bigtable and Azure Table

この使い方では、 Azure Table の「 Table 」は、 SQL でいうと tablespace (file group) に似た扱い同一領域( Data )に複数のクラスをシリアライズすることが可能(スキーマレス)Table と partitionkey が同じときだけトランザクションが可能

SQL との違い

04/11/2023 (C) ReedRex Co,. LTD. 40

Page 41: NoSQL Bigtable and Azure Table

• パーティションを分けることで分散ストレージとして利用できる

?• どれぐらいパーテーションを分割しても

大丈夫なのか

疑問

04/11/2023 (C) ReedRex Co,. LTD. 41

Page 42: NoSQL Bigtable and Azure Table

© Reed Rex Corp. 42

• 大量のパーティションを作成してもパフォーマンスは変わらない• 4億件ほど作成して確認• ユーザー毎にパーティションを作れば、ユーザーデータのレスポンスは、ユーザー数が増えても変わらない

スケーラビリティ

Page 43: NoSQL Bigtable and Azure Table

データ件数と処理時間遷移

0 50 100 150 200 250 300 350 400 0

10

20

30

40

50

60

70

80

90

100

0

200

400

600

800

1000

1200

1400

1600

1800

2000

Avg

Throughput

Data Count In Storage [x106]

Avg [

ms]

Thro

ughput

[Enti

ties/s

]

© Reed Rex Corp. 43

Page 44: NoSQL Bigtable and Azure Table

実装上の工夫

• パーティションを跨いだ処理ユーザー毎にパーティションを分けると、月次の売上処理が遅くなる。

• 多くのパーティションをまたぐので• 別テーブルを作る売上用の月次、日時で、パーティションを切ったテーブルを別途用意して書き込む

• 別トランザクションにするAzure Queueを使って別途行う。

• パーティションを跨いだトランザクションはサポートされていない• 集計データなので同期で書きこむ必要はない(=レスポンスを早く返せ

る)

© Reed Rex Corp. 44

Page 45: NoSQL Bigtable and Azure Table

04/11/2023 (C) ReedRex Co,. LTD. 45

Page 46: NoSQL Bigtable and Azure Table

ポイント

• Azure Table は大量のパーティションを扱うことができる

• パーテーションを分散することで、パフォーマンス劣化無しで、大量データが扱える

• コストは、トランザクション単価+ストレージ使用料の従量制

• パーティションを跨いだ処理は別途データを用意する

© Reed Rex Corp. 46

Page 47: NoSQL Bigtable and Azure Table

日本最大規模のソーシャルイベント11/30 ~ 12/25 の期間に利用可能な、アプリ上でくつしたを飾って、友人のベルを鳴らし合ったり、イベントに参加したりすることでレベルアップ、プレゼントに応募できる仕組みまた、mixi の決済機能を用いて、友人へギフトを送ったりすることができる機能もある

2009/2010は、GAE2011は、Windows Azure でサービス提供

mixi xmas 2011

04/11/2023 (C) ReedRex Co,. LTD. 47

Page 48: NoSQL Bigtable and Azure Table

11/30 サービススタート後、 49 時間で 100万人に到達。12/20 時点で 250 万ユーザーが利用しました。12/16~ 18 にはテレビ CM と連動したキャンペーンが展開され、 Windows Azure の拡張性を活用して柔軟にスケールアウトさせることにより、突発的なアクセス増加にも対応しています

スケール

04/11/2023 (C) ReedRex Co,. LTD. 48

Page 49: NoSQL Bigtable and Azure Table

1. ストレージへのピーク時のアクセスの軽減• ピーク時の想定アクセス数からストレージへの

アクセス頻度を計算すると Azure Storage のパフォーマンス目標値を超える

2. レスポンスの改善• 必要な、 mixi api のアクセス、ストレージの

アクエス数からレスポンスタイムを計算すると規定の時間を超える

課題

04/11/2023 (C) ReedRex Co,. LTD. 49

Page 50: NoSQL Bigtable and Azure Table

• memcached と、 K/V S は相性が良い• Read は、どちらも Key で Value を持ってくるだけ• Write は、 Key を使って、 Value を更新するので書き

込みをフックして memcached側をメンテすることが可能

• SQLだと select や、 update が柔軟すぎてエンティティのキャッシュは難しく、 Query ( SQL文)をキーにして結果を cache することになる。更新側をフックして cache をメンテするのも難しいので、 cache の有効性が低くなりがち。

対策 (1)   memcached の利用

04/11/2023 (C) ReedRex Co,. LTD. 50

Page 51: NoSQL Bigtable and Azure Table

• 複数パーテーションに対する Query は同時に実行する

• LINQ 式は、 IQueryable を有効利用• 実際投げられている http request をロ

グに書いて確認

対策 (2) ストレージ系チューニングの小技

04/11/2023 (C) ReedRex Co,. LTD. 51

Page 52: NoSQL Bigtable and Azure Table

04/11/2023 (C) ReedRex Co,. LTD. 52

Page 53: NoSQL Bigtable and Azure Table

• Windows Azure Storage にはパフォーマンス上限がある

• memcached を使うことでストレージへのアクセスが減らせる

• K/V S は、 memcached と相性が良く、同期が取りやすい

• Storage のチューニングは request を見てやるのが基本

ポイント

04/11/2023 (C) ReedRex Co,. LTD. 53

Page 54: NoSQL Bigtable and Azure Table

Facebookページ統合運用管理ツール

投稿管理「内容作成」「公開承認」など運用管理フロー内での作業範囲に合わせて、各担当者別に権限を設定可能

投稿監視管理画面上でタスクの依頼も設定でき、担当者間の連携が可能

オリジナルページユーザーとのコミュニケーションを活性化させるオリジナルページの生成が可能

Windows Azure Platformを利用

sociobridge

04/11/2023 (C) ReedRex Co,. LTD. 54

Page 55: NoSQL Bigtable and Azure Table

• 国内 1,000 万、全世界で8億を超えるFacebook ユーザーの負荷に耐えられるスケーラビリティ

• 投稿管理、ワークフローを実装するトランザクション処理

ストレージへの要求

04/11/2023 (C) ReedRex Co,. LTD. 55

Page 56: NoSQL Bigtable and Azure Table

• パーテーション• サブスクリプション毎に分割• Entity Group Transaction が必要なデータ

は、同一 Table に保存• Secondary Index は自前で実装

Windows Azure Table/Blob を利用

04/11/2023 (C) ReedRex Co,. LTD. 56

Page 57: NoSQL Bigtable and Azure Table

• 一回の Table の読み書きは、最低でも20ms かかる

• ページの表示は、 3秒以内で行う

• ページを分割して、 ajax で並列化

レイテンシー問題

04/11/2023 (C) ReedRex Co,. LTD. 57

Page 58: NoSQL Bigtable and Azure Table

04/11/2023 (C) ReedRex Co,. LTD. 58

Page 59: NoSQL Bigtable and Azure Table

• テナント毎にパーテーションを分割Entity Group が Subscription になるように

• 不特定多数のユーザーからのアクセスは、Blob で担保

モデル ー マルチテナント

04/11/2023 (C) ReedRex Co,. LTD. 59

Page 60: NoSQL Bigtable and Azure Table

• 一括書き込みのパフォーマンス向上に Batch Request を多用

• Azure Table の Entity Group Transaction は、 http POST の content-type multipart/mixed 。

• 2つの特性がある1. ACID トランザクションで実行2. ラウドトリップタイムの削減• 複数の SaveChanges() を集約することで、リクエス

ト数を少なくしてパフォーマンスが向上

トランザクション

04/11/2023 (C) ReedRex Co,. LTD. 60

Page 61: NoSQL Bigtable and Azure Table

End

ご清聴ありがとうございました。

04/11/2023 (C) ReedRex Co,. LTD. 61