本日、品川シーサイド楽天タワーで開催された NoSQL Afternoon In Japan で取得してきたメモを share。
- 少しづつ Reference 情報をあとから足していく予定です。
- 催し概要
- more than 400 applicant.
- 300 attendees.
- 13:00-18:30
- 同時通訳あり
- iPhone でのメモに挑戦してみる
- Shinya motohashi
- 時間厳守でやっていきたい
- 同時通訳レシーバーは必ず返却
- この部屋から持ち出さない
- 経緯:
もともとnosqlの論文の読書会、人を集める
Tim nosqlmeetup をやりたい- Tim NoSQL Summer を主催
ほとんどのプロジェクトは米発
世界中を回ってNoSQLの啓蒙
楽天への感謝、こういった場を設けられたことに関して
各スピーカーに対しての感謝
日本発のNoSQLに対しての興味- 日本側30分、海外側40分の時間配分
Hibari
- Hibari NoSQL for bigdata
- About Gemini
- Messaging products
- 2001 July founded
- This year opensourced Hibari
- Hibari=cloud birds
- Key value ,big data store
- Support Redhat,Centos, ...
- Why NoSQL?
Web mailsystem needs
Big data, low cost- Durability
- Strong consistency
- Low latency
- High availability
- Read heavy
- Lockless API
- Chain replication
- Chain provides scalability
- Chain is a partitioned key
- concept of chain
- Fault tolerance HA
- Compare Benchmark with Cassandra
- Benchmark in 3 ways
- In house tool
- Yahoo's cloud storage benchmark
- Basho bench
5台のレプリケーション同じ構成
Get and Put Performance
Latency/msec
Java のロードツールとErlangの相性による問題??
- Cassandra/Hibari Comparison
- Datamodel: column oriented/keyvalue
- Data replication preference: lists/chain replicating
- Strength: write powerful/read powerful
- Roadmap
- 2011 enterprise version
QA
- Admin server
- 変更を管理する
- CAP定理
- まだまだ難しい
- Erlang のパッチ
- R13B, 14B
Okuyama
- Kobe digital labo
- Takahiro Iwase
- 奈良、車好き、走りにいく道路の名前
Okuyama overview
- Java implemented
- Now 0.8.2
- 永続化メカニズム、ネットワーク
- Client -> Master node -> data node (セット数は可変)
Okuyama feature
- メモリーモード、ディスクモード、メモリーxディスク
→メモリーモードが最速
→ディスク、キーとバリューがセパレート
ディスクとメモリー管理、二タイプ- Memcaced, HTTPをサポート
- Redundancy
- Availability
- Network mechanism
- メタデータの管理
- 小さなデータ
- Okuyama tag 機能
- キーとタグの違い、タグでまとめられている情報の量に性能はよる
- データノード側でjavascriptを実行可能
- Data lock function 現状はスケーラビリティの問題、改善の余地あり
- Google code に upload 予定日
Cassandra
- Introduction to apache Cassandra
- Nate McCall
- @zznate
- ダウンロードして試した人まではいるがプロダクトまで出している人は稀
- Dynamo,amazon - Google,Bigtable - inbox search -> Cassandra
Scaling
- アルファベットのデータ配置
Reliability
Tunable consistency
Flexible data model
Not a key/value store
- Keys x column families
- Keys x SuperColumns
Secondary indexes
Analytics
Monitoring
Cluster load
Write latency
Client library
- Python
- Java
- Ruby
- .NET
Community
- Add-ons
- Lucandra
Services, Support and Training
- Riptano
Compaction
- Server memory adding
- JCM tuning
QA
- Upgrading
- ローリングアップグレード
- レンジゴースト??
- セカンダリインデックスで解消する
- アブロプロダクション??
- 運用上の問題解決
- Cluster の一台がこけたことにより、他のサーバーでさばくことができず連鎖的に落ちていくのをどうするか??
- スケーリングしてください、と。
ROMA
User-Cusomizable NoSQL
Background
- 簡単に構築できるNoSQLが望まれていた
- 2009オープンソース化
- 楽天内の様々なサービスで利用
- 社内から様々なニーズ、要望を受けてそれに対応していっている
- リストデータにどうしたら簡単にアクセスできるか??
- 楽天トラベルのニーズ対応
Plugin architecture -> ROMA の機能を拡張させるArchitecture
- 4 modules, NW IO module, ...
- Data partitioning
- Consistent hashing and virtual node
- Each virtual node 32bit ???
Data accessing
Ring Menbership Model, Sharing Ring
Message protocol
Heartbeat failure detection
Command Plugin
- ユーザが簡単にコマンドの定義をすることができる??
QA
- 各機能がモジュール化されている
- 外部の機能の利用も可能に
- GPL V3
- Ruby の理由
まつもとひろゆきさんが楽天のフェローだから。
Ruby で分散システムをつくったらどうなるかと考えたMyCassandra??*1
- 東京工業大学
- Cassandra のデータ部分をmysqlに置き換え
- 図の見方がよく分からない
- VoltDB ,Redis
- NoSQL は分散のしかけ、ストレージに分離できるという発想
MongoDB
10gen
Quick introduction
- Adoption is very very strong.
- 90000 download
- 1000 production, like 4 square
- C++
- platform 32/64 bit
- Prenty of language drivers
- Ruby, java, C,C++
No join + no complex transactions
New data model
- Terminology
- Colection
- JSON document
- Embedding and link
- Shard
- Shard link
Design session
- どうやって操作するか??
- Secondary Index on any fields in document
- Not a key value stores
- Data is JSON document
- Query operators
- Extending the schema
→手間が低い, push,Create index on nested document
→ネストしたデータ格納ができる??
→ネストしたデータに対する IndexingDeployment of MongoDB
- Primary read/write
- Secondary read
- Secondary for backup
Scalability
- Shard することで高めることができる
- Adding replica set
Monitoring
- They like Munin
- Measure stats overtime
- Tells what is going on with your system
MongoDB enables easy Application building
- Map/Reduce
- Capped Collection
- Tailable Cursors
- Geo indexing
QA
- twitter: @mongodb
- Only to Identify hash key
- Performance
- Benchmark results
- They don't much benchmark results, It depends on each system
- Starting without sharding , its easy to shard it, not need down time
- Roadmap
Support の強化、日本語ドキュメント
- Availability
Replica set がダウンしたときにどうするのか
ちょっと質問の意味を取り違えているような
Primary , secondary は同じデータセンター
もう一つの secondary は違うデータセンターに配置するkumofs
- kumofs
distributed key value store- Messagepack
- Kumo=雲=cloud
- Get, set, delete, CAS(compare and swap)
- Read and write scalable
- えとらぼ
- Photo storage service
Why kumofs ?
- Need to manage heavy read and write
- Don't want wake up late of night
- Manager x Servers x Gateway
- Application request through GW
- GW, hides configuration of cluster fr application
- Administration tools are implemented by Ruby
MassagePack
- Cross language
- Dynamic typing like JSON
- More compact than JSON
- So very fast and small
MessagePack RPC
- Cross language messaging library
- Asynchronous RPC with parallel pipelining
- Connection pooling
- Event-driven IO
- Multiple client can share the event loop
- timer, signal handler, ... also are shared in event loop
QA
- @kzk_movers
- Ameba now
- kumofs は Primitive なデータを扱うことを想定している
- 開発のきっかけ
- えとらぼで、アルバイトしているときにただひたすら速いデータ処理の仕組みを作ろうと思ったから
Couch DB
Relaxing with CouchDB
Introduction
- Came from Boston
- Not a CouchDB commiter ... But using it for several years
- Schema free, docunent database management
- Written in Erlang
- Top level apache project
- JSON document consist of several set of key and values
Resultful API
- Supports CRUD
- Never overwrite previously committed data
- Append only b-tree, copy-on-write
Views
Incremental Indexes
- Only new docs or changed docs get ...
Replication
- Peer-based, bi-directional using normal HTTP
Multi-couch setups
- Master x slave
- Robust Multi master
- Master x master
Conflicts
- Chooses a winner but the looser is saved with the document as looser rev
FUTON
BigCouch??
- CouchDB+Scaling
- CouchDB is awesome but somewhat incomplete
- Horizontal scaling
- Transparent to the application
- No single point of failures
- Best practice of BigCouch
- Q : number of Disk spinning
- Small DB small Q, big DB big Q
- Fractal Scaling
CouchDB in the wild
- 15+ million deployment
Why not CouchDB??
- Missing features
- Adhoc queries -> is true by design
- Doesn't scale -> use BigCouch
- Too new API still changing -> 1.0.x release and stabled
QA
- What is different between MongoDB??
Very similar but many in difference, i.e. Replication, Sharding handling- Adhoc query fast -> View
HBASE/Hadoop
- cloudera, software engineer
Why should you care?
- Data is everywhere
- Article : the unreasonable effectiveness of data
- Next 10 years job will be stastitians
So what's Hadoop
- Stores a lot of informations across many commodity computers
Store and Process
- HDFS and Map Reduce
What makes Hadoop special
- Hadoop separates it's fault tolerance system from applications
- Scalability
- Both are work
- 100GB less image data
- 100TB more than log data
- 5-4000 commodity servers
Master nodes
- Name node x jobtracker
Slave nodes
- Name node
HDFS storage
HDFS write path
MapReduce
- Map functions and reduce functions
- Map function works same node of data node
- Shuffle the data
- Reduce
- Put it together -> HDFS
Hadoop is not NoSQL
- Hive supports SQL like language
Ecosystem around Hadoop
Hadoop in wild
- Yahoo
HBASE
- HDFS + random read/write
- A big sorted map
HBASE API
- Get
- Put
- Scan range, filter
- Increment
...Quicklook of architecture
- Image
Numbers of HBASE
- larger cluster : 600 nodes - 600TB
HBASE
- Ordered range scan
- Automatically shards , scaling
HBase in product
- Mozilla -> recieves crash report
Free learning video, available
- cloudera.com
HBase can use realtime
*1:飛び入り