Cassandraのトランザクションサポート化 & web2pyによるcms用プラグイン開発
Upcoming SlideShare
Loading in...5
×
 

Cassandraのトランザクションサポート化 & web2pyによるcms用プラグイン開発

on

  • 2,960 views

"PyCon JP 2011"のライトニングトークでの資料です。 ...

"PyCon JP 2011"のライトニングトークでの資料です。
Cassandraベースでどのようにトランザクションを実現したか(の概略)と、
webフレームワークであるweb2py用のCMSプラグインのご紹介です。

Statistics

Views

Total Views
2,960
Views on SlideShare
2,960
Embed Views
0

Actions

Likes
2
Downloads
17
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Cassandraのトランザクションサポート化 & web2pyによるcms用プラグイン開発 Cassandraのトランザクションサポート化 & web2pyによるcms用プラグイン開発 Presentation Transcript

    • Cassandraのトランザクションサポート化 & web2pyによるCMS用プラグイン開発 Transaction support on Cassandra & CMS plugins for web2py
    • ● おまえ、誰よ? Who are you? 岸本 康二 @ Koji KISHIMOTO 株式会社エスキュービズム Pythonで受託と研究開発 などを行っています Python歴は10年ちょっと
    • 社内にPython好きが多すぎた成果物 > we_love_python = True > if we_love_python: > print PythonBook()中級以上向け
    • ①Cassandraのトランザクションサポート化 ① Transaction support on Cassandra
    • ● Cassandra って? What is Cassandra? 分散KVS(Key-Value Store) distributed key-value store ApacheのTop Level Projectの1つ Facebook社がOSS化した物が基に
    • ● とってもスケーラブル! Scalable! ノードを追加するだけで 処理性能がリニアにUP↑ Simply, add nodes and youll get more power! 分散KVS RDB ↑パフォーマンスperformance ノード数 → # of nodes
    • ● Cassandra + トランザクション Cassandra + Transaction 分散KVSでトランザクション が出来たら最高! It is desirable for distributed KVS to have the transation function! ↓ もう高価な有償RDBは不要にな(ry A Farewell To RDBs
    • ● Cassandra + トランザクション Cassandra + Transaction でも、往々にして 「分散KVSでトランザクション?(笑)」 ・・・となるのがオチ transaction on distributed KVS? ha ha ha! ↑ CAP定理と通説が原因 CAP theorem and common belief
    • ● CAP定理 CAP theorem C: 一貫性 (Consistency) A: 可用性 (Availability) P: 分断耐性 (Partition tolerance)
    • ● CAP定理での誤解 Misunderstanding about CAP theorem× 3つの保証を提供できない It is impossible to provide all three○ 3つの保証を「同時に」提供できない It is impossible to simultaneously provide all three 「同時」ではなかったら? What will happen if the system does not simultaneously provide all three?
    • ● Cassandraの場合 In the case of Cassandra C A P 定理 two of "C", "A" and "P" Solution: write & read pair 書き込み時のみではなく、"結果整合性"と関係 "eventual consistency" 読み込み時にも処理を行う ( = "Read Repair") → 強一貫性も実現 realization of "Consistency"
    • ● トランザクション Transaction on Cassandra 書き込み時のみではなく、 読み込み時にも処理を行う ( = "Read Repair") というアイディアを トランザクションに応用したら?! The same idea is availabe for the transaction! Isnt it?
    • ● 「NanaHoshi」を開発 Weve developed "NanaHoshi" 実際に実装してみて振り返ると "BASE"型トランザクション のコンセプトと似てました NanaHoshi has "BASE" type transaction mechanism BA: Basically Available S : Soft-state ← Important! E : Eventual consistency
    • ● 結論 Conclusion 分散KVSでトランザクションできます We can use the transaction on distributed KVS. 業務システム構築に利用できます しかも スケーラブルに More info → http://ec-cube.ec-orange.jp/lp/nanahoshi/ http://ec-cube.ec-orange.jp/lp/nanahoshi/
    • ● NanaHoshiの構造 Structure of "NanaHoshi" Object mapper Transaction logic Abstract access layer Thrift IF Cassandra
    • ● NanaHoshiの構造 Structure of "NanaHoshi" ここが全部Python。 Cassandra,Thrift関係以外は 全て標準機能・モジュールで構成 Object mapper Transaction logic Abstract access layer Thrift IF Cassandra
    • ● 簡単サンプルコード Simple sample code ### Initialization connection = CassandraConnection() connection.open() connection.set_keyspace(TEST) ### Preparation lockable = ModelLockable(connection, key) lockable.load() ・・・(etc.) ### Transaction transaction = ModelTransaction(connection) try: transaction.start() if not lockable.join(transaction): raise Exception() lockable.load() lockable.data += 10 lockable.save() Web server: if not transaction.end(): Tornado raise Exception() except: transaction.forget()
    • ● NanaHoshiの構造 Structure of "NanaHoshi" 実は、 Cassandra以外 でも動かせる設計です。 Object mapper Transaction logic Abstract access layer Thrift IF ( → another access IF) Cassandra → another DB
    • 10月初旬に Cassandraイベント を行う予定です。DataStaxさんからも参加予定です。
    • ②web2pyによるCMS用プラグイン開発 ② CMS plugins for web2py
    • ● web2py って? What is web2py? Webアプリケーションフレームワーク Web application framework OSSで学習が非常に容易。 最近はDjangoに追い付け追い越せ の勢いです。
    • ● CMSへの利用 Application to CMS 株のSNSサイト 『みんなの株式』 (みんかぶ) 内でも動作中。 実案件でPython 使ってます。
    • ● CMSへの利用 Application to CMS
    • ● デモサイト公開! Demo site is available!dev.s-cubism.comソースコードも公開もちろん無料です