SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
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 you'll 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!
                       Isn't it?
● 「NanaHoshi」を開発                         We've 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

ソースコードも公開
もちろん無料です

Más contenido relacionado

La actualidad más candente

SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係datastaxjp
 
Cassandra Meetup Tokyo, 2016 Spring
Cassandra Meetup Tokyo, 2016 SpringCassandra Meetup Tokyo, 2016 Spring
Cassandra Meetup Tokyo, 2016 Springdatastaxjp
 
cassandra調査レポート
cassandra調査レポートcassandra調査レポート
cassandra調査レポートAkihiro Kuwano
 
Guide to Cassandra for Production Deployments
Guide to Cassandra for Production DeploymentsGuide to Cassandra for Production Deployments
Guide to Cassandra for Production Deploymentssmdkk
 
Cassandra Meetup Tokyo, 2016 Spring 2
Cassandra Meetup Tokyo, 2016 Spring 2Cassandra Meetup Tokyo, 2016 Spring 2
Cassandra Meetup Tokyo, 2016 Spring 2datastaxjp
 
DB Tech showcase Tokyo 2015 Works Applications
DB Tech showcase Tokyo 2015 Works ApplicationsDB Tech showcase Tokyo 2015 Works Applications
DB Tech showcase Tokyo 2015 Works Applications2t3
 
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームApache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームKazutaka Tomita
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Yuki Morishita
 
NoSQLに関するまとめ
NoSQLに関するまとめNoSQLに関するまとめ
NoSQLに関するまとめGosuke Miyashita
 
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...Insight Technology, Inc.
 
Cassandra Summit Tokyo 2015 - intra-mart
Cassandra Summit Tokyo 2015 - intra-martCassandra Summit Tokyo 2015 - intra-mart
Cassandra Summit Tokyo 2015 - intra-martAkihiro Sei
 
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...Insight Technology, Inc.
 
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門Yuki Morishita
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例terurou
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門じゅん なかざ
 
qpstudy 2013.07 NoSQL
qpstudy 2013.07 NoSQLqpstudy 2013.07 NoSQL
qpstudy 2013.07 NoSQLAkihiro Okuno
 
NOSQLの基礎知識(講義資料)
NOSQLの基礎知識(講義資料)NOSQLの基礎知識(講義資料)
NOSQLの基礎知識(講義資料)CLOUDIAN KK
 
cassandra 100 node cluster admin operation
cassandra 100 node cluster admin operationcassandra 100 node cluster admin operation
cassandra 100 node cluster admin operationoranie Narut
 
Amazon Redshiftへの移行方法と設計のポイント(db tech showcase 2016)
Amazon Redshiftへの移行方法と設計のポイント(db tech showcase 2016)Amazon Redshiftへの移行方法と設計のポイント(db tech showcase 2016)
Amazon Redshiftへの移行方法と設計のポイント(db tech showcase 2016)Amazon Web Services Japan
 

La actualidad más candente (20)

SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係
 
Cassandra Meetup Tokyo, 2016 Spring
Cassandra Meetup Tokyo, 2016 SpringCassandra Meetup Tokyo, 2016 Spring
Cassandra Meetup Tokyo, 2016 Spring
 
cassandra調査レポート
cassandra調査レポートcassandra調査レポート
cassandra調査レポート
 
Guide to Cassandra for Production Deployments
Guide to Cassandra for Production DeploymentsGuide to Cassandra for Production Deployments
Guide to Cassandra for Production Deployments
 
Cassandra Meetup Tokyo, 2016 Spring 2
Cassandra Meetup Tokyo, 2016 Spring 2Cassandra Meetup Tokyo, 2016 Spring 2
Cassandra Meetup Tokyo, 2016 Spring 2
 
DB Tech showcase Tokyo 2015 Works Applications
DB Tech showcase Tokyo 2015 Works ApplicationsDB Tech showcase Tokyo 2015 Works Applications
DB Tech showcase Tokyo 2015 Works Applications
 
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームApache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
NoSQLに関するまとめ
NoSQLに関するまとめNoSQLに関するまとめ
NoSQLに関するまとめ
 
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
 
Cassandra Summit Tokyo 2015 - intra-mart
Cassandra Summit Tokyo 2015 - intra-martCassandra Summit Tokyo 2015 - intra-mart
Cassandra Summit Tokyo 2015 - intra-mart
 
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
 
これがCassandra
これがCassandraこれがCassandra
これがCassandra
 
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
qpstudy 2013.07 NoSQL
qpstudy 2013.07 NoSQLqpstudy 2013.07 NoSQL
qpstudy 2013.07 NoSQL
 
NOSQLの基礎知識(講義資料)
NOSQLの基礎知識(講義資料)NOSQLの基礎知識(講義資料)
NOSQLの基礎知識(講義資料)
 
cassandra 100 node cluster admin operation
cassandra 100 node cluster admin operationcassandra 100 node cluster admin operation
cassandra 100 node cluster admin operation
 
Amazon Redshiftへの移行方法と設計のポイント(db tech showcase 2016)
Amazon Redshiftへの移行方法と設計のポイント(db tech showcase 2016)Amazon Redshiftへの移行方法と設計のポイント(db tech showcase 2016)
Amazon Redshiftへの移行方法と設計のポイント(db tech showcase 2016)
 

Destacado

Titan and Cassandra at WellAware
Titan and Cassandra at WellAwareTitan and Cassandra at WellAware
Titan and Cassandra at WellAwaretwilmes
 
Modeling the IoT with TitanDB and Cassandra
Modeling the IoT with TitanDB and CassandraModeling the IoT with TitanDB and Cassandra
Modeling the IoT with TitanDB and Cassandratwilmes
 
Addressing performance issues in titan+cassandra
Addressing performance issues in titan+cassandraAddressing performance issues in titan+cassandra
Addressing performance issues in titan+cassandraNakul Jeirath
 
RDBからの脱却: 新ERP"HUE"におけるCassandra
RDBからの脱却: 新ERP"HUE"におけるCassandraRDBからの脱却: 新ERP"HUE"におけるCassandra
RDBからの脱却: 新ERP"HUE"におけるCassandra2t3
 
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpnCassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpnhaketa
 
マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016都元ダイスケ Miyamoto
 
Build a Recommendation Engine using Amazon Machine Learning in Real-time
Build a Recommendation Engine using Amazon Machine Learning in Real-timeBuild a Recommendation Engine using Amazon Machine Learning in Real-time
Build a Recommendation Engine using Amazon Machine Learning in Real-timeAmazon Web Services
 
Using AWS to Build a Graph-Based Product Recommendation System (BDT303) | AWS...
Using AWS to Build a Graph-Based Product Recommendation System (BDT303) | AWS...Using AWS to Build a Graph-Based Product Recommendation System (BDT303) | AWS...
Using AWS to Build a Graph-Based Product Recommendation System (BDT303) | AWS...Amazon Web Services
 

Destacado (9)

Titan and Cassandra at WellAware
Titan and Cassandra at WellAwareTitan and Cassandra at WellAware
Titan and Cassandra at WellAware
 
Modeling the IoT with TitanDB and Cassandra
Modeling the IoT with TitanDB and CassandraModeling the IoT with TitanDB and Cassandra
Modeling the IoT with TitanDB and Cassandra
 
Addressing performance issues in titan+cassandra
Addressing performance issues in titan+cassandraAddressing performance issues in titan+cassandra
Addressing performance issues in titan+cassandra
 
RDBからの脱却: 新ERP"HUE"におけるCassandra
RDBからの脱却: 新ERP"HUE"におけるCassandraRDBからの脱却: 新ERP"HUE"におけるCassandra
RDBからの脱却: 新ERP"HUE"におけるCassandra
 
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpnCassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
 
マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016
 
Build a Recommendation Engine using Amazon Machine Learning in Real-time
Build a Recommendation Engine using Amazon Machine Learning in Real-timeBuild a Recommendation Engine using Amazon Machine Learning in Real-time
Build a Recommendation Engine using Amazon Machine Learning in Real-time
 
Paxos
PaxosPaxos
Paxos
 
Using AWS to Build a Graph-Based Product Recommendation System (BDT303) | AWS...
Using AWS to Build a Graph-Based Product Recommendation System (BDT303) | AWS...Using AWS to Build a Graph-Based Product Recommendation System (BDT303) | AWS...
Using AWS to Build a Graph-Based Product Recommendation System (BDT303) | AWS...
 

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

DockerとKubernetesが作る未来
DockerとKubernetesが作る未来DockerとKubernetesが作る未来
DockerとKubernetesが作る未来Kazuto Kusama
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutesYohei Sasaki
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
Cloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a ServiceCloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a ServiceShunsuke Kurumatani
 
ざっくり DDD 入門!!
ざっくり DDD 入門!!ざっくり DDD 入門!!
ざっくり DDD 入門!!Yukei Wachi
 
絵で見てわかる 某分散データストア
絵で見てわかる 某分散データストア絵で見てわかる 某分散データストア
絵で見てわかる 某分散データストアTakahiko Sato
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...Amazon Web Services Japan
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05都元ダイスケ Miyamoto
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouchYohei Sasaki
 
Observability, Service Mesh and Microservices
Observability, Service Mesh and MicroservicesObservability, Service Mesh and Microservices
Observability, Service Mesh and MicroservicesTaiki
 
Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築伊藤 祐策
 
AWS Summit New York 2017 Keynote Recap
AWS Summit New York 2017 Keynote RecapAWS Summit New York 2017 Keynote Recap
AWS Summit New York 2017 Keynote RecapEiji Shinohara
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - SORACOM, INC
 
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法Kazuto Kusama
 
20101220 pixiv tech_meeting
20101220 pixiv tech_meeting20101220 pixiv tech_meeting
20101220 pixiv tech_meetingsemind
 
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)Amazon Web Services Japan
 
CDP キャンペーンサイト編 UPDATE
CDP キャンペーンサイト編 UPDATECDP キャンペーンサイト編 UPDATE
CDP キャンペーンサイト編 UPDATEHiroyasu Suzuki
 

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

DockerとKubernetesが作る未来
DockerとKubernetesが作る未来DockerとKubernetesが作る未来
DockerとKubernetesが作る未来
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutes
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
Cassandra0.7
Cassandra0.7Cassandra0.7
Cassandra0.7
 
Cloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a ServiceCloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a Service
 
ざっくり DDD 入門!!
ざっくり DDD 入門!!ざっくり DDD 入門!!
ざっくり DDD 入門!!
 
絵で見てわかる 某分散データストア
絵で見てわかる 某分散データストア絵で見てわかる 某分散データストア
絵で見てわかる 某分散データストア
 
CDP in NAGOYA
CDP in NAGOYACDP in NAGOYA
CDP in NAGOYA
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouch
 
Observability, Service Mesh and Microservices
Observability, Service Mesh and MicroservicesObservability, Service Mesh and Microservices
Observability, Service Mesh and Microservices
 
Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築
 
AWS Summit New York 2017 Keynote Recap
AWS Summit New York 2017 Keynote RecapAWS Summit New York 2017 Keynote Recap
AWS Summit New York 2017 Keynote Recap
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
 
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
 
20101220 pixiv tech_meeting
20101220 pixiv tech_meeting20101220 pixiv tech_meeting
20101220 pixiv tech_meeting
 
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
 
CDP キャンペーンサイト編 UPDATE
CDP キャンペーンサイト編 UPDATECDP キャンペーンサイト編 UPDATE
CDP キャンペーンサイト編 UPDATE
 

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

  • 1. Cassandraのトランザクションサポート化 & web2pyによるCMS用プラグイン開発 Transaction support on Cassandra & CMS plugins for web2py
  • 2. ● おまえ、誰よ? Who are you? 岸本 康二 @ Koji KISHIMOTO 株式会社エスキュービズム Pythonで受託と研究開発 などを行っています Python歴は10年ちょっと
  • 3. 社内にPython好きが多すぎた成果物 > we_love_python = True > if we_love_python: > print PythonBook() 中級以上向け
  • 4. ① Cassandraのトランザクションサポート化 ① Transaction support on Cassandra
  • 5. ● Cassandra って? What is Cassandra? 分散KVS(Key-Value Store) distributed key-value store ApacheのTop Level Projectの1つ Facebook社がOSS化した物が基に
  • 6. ● とってもスケーラブル! Scalable! ノードを追加するだけで 処理性能がリニアにUP↑ Simply, add nodes and you'll get more power! 分散KVS RDB ↑ パフォーマンス performance ノード数 → # of nodes
  • 7. ● Cassandra + トランザクション Cassandra + Transaction 分散KVSでトランザクション が出来たら最高! It is desirable for distributed KVS to have the transation function! ↓ もう高価な有償RDBは不要にな(ry A Farewell To RDBs
  • 8. ● Cassandra + トランザクション Cassandra + Transaction でも、往々にして 「分散KVSでトランザクション?(笑)」 ・・・となるのがオチ transaction on distributed KVS? ha ha ha! ↑ CAP定理と通説が原因 CAP theorem and common belief
  • 9. ● CAP定理 CAP theorem C: 一貫性 (Consistency) A: 可用性 (Availability) P: 分断耐性 (Partition tolerance)
  • 10. ● 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?
  • 11. ● 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"
  • 12. ● トランザクション Transaction on Cassandra 書き込み時のみではなく、 読み込み時にも処理を行う ( = "Read Repair") というアイディアを トランザクションに応用したら?! The same idea is availabe for the transaction! Isn't it?
  • 13. ● 「NanaHoshi」を開発 We've developed "NanaHoshi" 実際に実装してみて振り返ると "BASE"型トランザクション のコンセプトと似てました NanaHoshi has "BASE" type transaction mechanism BA: Basically Available S : Soft-state ← Important! E : Eventual consistency
  • 14. ● 結論 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/
  • 15. ● NanaHoshiの構造 Structure of "NanaHoshi" Object mapper Transaction logic Abstract access layer Thrift IF Cassandra
  • 16. ● NanaHoshiの構造 Structure of "NanaHoshi" ここが全部Python。 Cassandra,Thrift関係以外は 全て標準機能・モジュールで構成 Object mapper Transaction logic Abstract access layer Thrift IF Cassandra
  • 17. ● 簡単サンプルコード 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()
  • 18. ● NanaHoshiの構造 Structure of "NanaHoshi" 実は、 Cassandra以外 でも動かせる設計です。 Object mapper Transaction logic Abstract access layer Thrift IF ( → another access IF) Cassandra → another DB
  • 19. 10月初旬に Cassandraイベント を行う予定です。 DataStaxさんからも参加予定です。
  • 21. ● web2py って? What is web2py? Webアプリケーションフレームワーク Web application framework OSSで学習が非常に容易。 最近はDjangoに追い付け追い越せ の勢いです。
  • 22. ● CMSへの利用 Application to CMS 株のSNSサイト 『みんなの株式』 (みんかぶ) 内でも動作中。 実案件でPython 使ってます。
  • 23. ● CMSへの利用 Application to CMS
  • 24. ● デモサイト公開! Demo site is available! dev.s-cubism.com ソースコードも公開 もちろん無料です