SlideShare a Scribd company logo
1 of 91
Download to read offline
ScyllaDB User Group Japan.
スケールアップファーストのNoSQL、ScyllaDB(スキュラDB)
高速化とノード縮小の原点に迫る
クリエーションライン株式会社
データエンジニアリングチーム
LEE CHANGHWAN
1
ScyllaDB User Group Japan.
ScyllaDBユーザーグループ
2
https://scylladb-usergroup-jp.connpass.com/
**設立目的**
ScyllaDB(Scylla、スキュラと読む)ユーザーグループは、ScyllaDBに関する情報発信、会
員相互間の情報共有などを目的として設立しています。
https://www.scylladb.com/open-source/
ScyllaDB User Group Japan.
設立
• 2006年1月
事業概要
• クラウドインテグレーション事業
• データ分析サービス事業
• DevOps関連サービス事業
クリエーションラインのホームページ
• https://www.creationline.com
クリエーションライン株式会社
3
ScyllaDB User Group Japan.
自己紹介
李 昌桓 (LEE CHANGHWAN, @awk256)
• データエンジニアリングチーム所属
• データベースが大好きなエンジニア。ビックデータ処理基盤のアーキテクトとして活動している。
著書
• グラフデータベースNeo4jの他
4
ScyllaDB User Group Japan.
計算資源をめぐる大変革の時代
• CPUのコア数の暴走
• 高コアのCPUでは
• 高帯域のネットワークでは
• 高スループットのストレージでは
データベースのルネサンス時代
• ScyllaDBのクラスタ―及び読み書き
• ScyllaDB(スキュラDB)とは
• ScyllaDBの高速性に迫る
アゼンダー
5
ScyllaDB User Group Japan. 6
計算資源をめぐる大変革の時代
ScyllaDB User Group Japan.
Slackに1行のメッセージから流れた(from木内)
• 李さん、こんなのがあるらしいよ!
• https://www.scylladb.com/
Topページをみると「The Real Time Big Database」
• Cassandra10倍速い,ノード毎に100万IOPS、オペレーションの99%が1ms、 Shrink
Nodes(1/5~1/10)
• うさん臭いなあ~
7
ScyllaDB User Group Japan.
ホワイトペーパのちょっと読んでみるも
• 高速である理由を説明する各種用語が難しい
• さらに、高速である必要性が理解できない
キーワードを調べながら数カ月が経った
• ScyllaDBは、計算資源をめぐるパラダイムのシフトを的確にとらえている
• 疑心暗鬼のところからある種の信念が芽生え始めた。 これは世の中のためになる!
8
https://www.scylladb.com/product/technology/
ScyllaDB User Group Japan.
計算資源をめぐって大変革が起きている
• 高コア数
• ラージメモリ(RAM)
• 高帯域のネットワーク
• 高スループットのストレージ
その理由は
• 計算資源の最大の買い手であるクラウドプロバイダーが求めている
• マルチディア、機械学習、AIなど廉価でリッチな計算資源のニーズが爆発的な増加している
9
ScyllaDB User Group Japan. 10
Up to 40 Cores and 2TB RAM
ScyllaDB User Group Japan. 11
10GbE/40GbE
ScyllaDB User Group Japan. 12
V-NAND SSD 970 PRO 1TB SAMSUNG
Sequential Read 3,500MB/s
Sequential Write 2,700BM/s
ScyllaDB User Group Japan.
別に、それはそれでいいじゃないか?
• 高速にデータ処理が出来て
• 高速に転送出来て
• 高速に保存できるはず
だが、現代的なハイエンドサーバーをデータベースで利用しようとすると
• CPU/ネットワーク/DISK IOなどでボトルネックを引き起こす
13
ScyllaDB User Group Japan. 14
高コア数/ビックメモリ/高帯域ネットワーク/高スループットのストレージ
専用機器や
OSに任せておけば
よかった時代
サーバーアプリケーションに
改革が求められている
殆どのDBアプリケーションが
対応に乗り遅れている
ScyllaDB User Group Japan. 15
CPUのコア数の暴走
ScyllaDB User Group Japan. 16
ちょっと、コンピュータの仕組みを復習しよう
• CPU(Central Processing Unit, 中央演算装置)
• メインメモリ(主記憶装置,一時記憶装置)
• 入出力装置
ScyllaDB User Group Japan. 17
1978年、T. Hoareの予言的なレポート
• Communication Sequential Processes
http://weblab.cs.uml.edu/~bill/cs515/CSP_Hoare_78.pdf
• CPUは、クロック数を上げることに限界に達する
• 未来のコンピュータは、より多くのコア数を手にする
ScyllaDB User Group Japan.
CPUのクロック周波数とは、0と1のビット演算を何回できるか、つまりCPUの性能
• 1Hz:1秒あたり1回
• 1KHz:1秒あたり1000回
• 1MHz:1秒あたり100万回
• 1GHz:1秒あたり10億回(これが一般的に)
• 1THz:1秒あたり1兆回
18
1971年:Intel 4004 → 108KHz
1976年:Intel 8086 → 5MHz
1989年:Intel i486 → 100MHz
1993年:Intel Pentium → 300MHz
2000年:Intel Pentium 4 → 1.40 ~ 3.80GHz
2008年:Intel Core i7 → 2.66 ~ 3.20GHz
2017年:Intel Core i7 7740X → 4.30 ~ 4.50GHz
2018年:Intel Core i7 8086K → 5.00GHz
インテルがCPUを作り始めて47年で、クロック周波数は46300倍まで進歩
ScyllaDB User Group Japan.
Core(コア)とは、CPUと称する装置のなかの計算ユニットを称するものである?
つまり、CoreとはCPUであり、CPUはCoreである?
現代では、コア数はCPUの性能を称する代名詞になっている。
19
1
シングルコア
1
2 1 2
デュアルコア
2005年頃
Athlon 64 X2
Pentium D
1 2
クアッドコア
2006年頃
Core 2 Quad
Phenom X4
ScyllaDB User Group Japan.
もう、コア数の暴走は止まらなくなっている
20
• 1コア:シングルコア
• 2コア:デュアルコア
• 3コア:トリプルコア
• 4コア:クアッドコア
• 6コア:ヘキサコア
• 8コア:オクタコア
• 10コア:デカコア
もう、数字読みで〇〇コアと呼ぶのが一般化されているのではないか
ScyllaDB User Group Japan.
複数のCPUとメモリが1つのシステムの載せられたアーキテクチャー(トポロジーの変化)
• SMPアーキテクチャーではコア数の暴走により、CPUとメモリが不整合が起きるようになった
• CPUとメモリのIOパスがへ並列化されることで、格段にスループットが上がる
• 仮に14GB/1secのメモリパスを並列化すると、28GB/1secになる
NUMA(Non-uniform memory access)
21
http://frankdenneman.nl/2016/07/07/numa-deep-dive-part-1-uma-numa/
ScyllaDB User Group Japan. 22
スレッドとは
• 伝統的なコアは、同時に1コアが1つの仕事しかできない
• 現代的なコアは、同時に1コアが複数の仕事をする
• もはや、コンピューターの性能は、コア数とスレッド数
ScyllaDB User Group Japan. 23
高コア数のCPUでは
ScyllaDB User Group Japan.
CPUの働き方
• 割り込み
割り込みは、CPUとOSでサポートされる機能で、「今やっている処理に割り込んで特別な処理を実行する」こと
CPUに割り込みが生じると、現在実行している処理(命令)を停止して別の処理を実行する
周辺機器からの情報を、他の作業をしながらも取り落とすことなく受け取る、例えば、キーボードの入力とか
それで、CPU資源を有効利用、応答性の向上、例外処理の効率、正確なタイミングの取得
人に例えば、会議中に携帯で業務連格を受け取るとか、特に会議に重大な問題が起きるわけではない
• ロック
複数のプロセス(又はスレッド)が共有メモリを使用してデータ処理をしているときに、
あるプロセスに独占的に使わせるための制御
つまり、データベースのようにデータの不整合を避けるための措置である
24
ScyllaDB User Group Japan.
Linuxにおけるスレッド間の通信
25
ほとんどのアプリケーションは、ロ
ックを使用してスレッド間通信を実
装しています。
この方法は一部のアプリケーション
では効果的ですが、データ集約型の
多数のコアアプリケーションではス
ケーラビリティの問題があります。
ロックを取ったり解放したりするた
めに必要な労力は、サーバーの規模
に応じて大きくなります。
https://www.scylladb.com/2018/02/15/memory-barriers-seastar-linux/
ScyllaDB User Group Japan.
thread-per-connection方式のアプリケーション
これは、接続が増えるとスレット数も比例して増える。
• 同時接続が増える単に実行スレッド数も増える
• スレッド数が増えるとCPUはビージ状態になる
• さらに、スレッドはヘビーなオブジェクトでもあり、それぞれメモリを消費する
結局、大量リソースを消費するために、単純アプリケーションでしが、上手く働かない。
需給のバランスを取ることは非常に難しく、短命で終了!
26
ScyllaDB User Group Japan.
thread poolsのアプリケーション方式
これは、多数の接続が、より少ない数のスレッド(スレッドプール)を共有して処理する。
スレッドの暴走を抑えるために、現在の殆どのアプリケーションで実装している。
• 書き込み可能な共有データが存在する場合、プロセッサーからプロセッサーへのキャッシュデータの移動が必要で
ある。
• あるプロセッサーに割り当てられたデータへ別のプロセッサーからアクセスする必要も出てくる。
• CPUの過剰な働きが制御できない
OSの使命は、CPU使用率を最大化すること。スレッド(Linuxの処理の単位)をちょっと待たせれば、順番が回ってくるところ、
別のCPUに移動させてしまい、結果的にメモリアクセスの再配など遅延を引き起こす
データ集約型処理では、暴走するロックを回避できない、CPUの過剰な働きが制御できないために、十数コアまでが
限界だと言われている。
27
ScyllaDB User Group Japan. 28
高帯域のネットワークでは
ScyllaDB User Group Japan.
そもそも
• 専用H/Wで処理したものが、クラウドになってからソフトウェア化し、大幅にパフォーマンスが落ちているパターン
• アプリケーションが10GbE以上のNICに対応していないパターン
• ネットワークは高速になっており、コア数は各段に増えているが、どのコアもパケットを処理をする能力をもっていな
い。ハイウェイ(ネットワーク帯域)は出来ているが、陳腐化した物流システムが物流を邪魔しているような状態
29
10GBps の ネ ッ ト ワ ー ク で
1024Byteのパケットを処理す
る2GHz プロセッサーが、パ
ケットあたりにわずか1670ク
ロックサイクルしかない。
パケットごとに多数のクロック
サイクルが使用可能な場合には、
発想を変えるべきではないか
ScyllaDB User Group Japan.
カーネルで受信パケットカウント処理を実行する場合の処理シーケンス
1. NICがカーネルに割り込みを発生させる
2. カーネルが割り込み処理するために、コンテキストスイッチを発生させる
3. カーネルがNICに対応するドライバー処理を実行する
4. カーネルがネットワークスタック処理を実行する
5. カーネルがパケットカウント処理(アプリケーション)を実行する
2,3,4が特にソフトウェア処理上のオーバヘッドになる
高コア数になって、従来の「割り込み/ロック」という思想の処理方式が崩壊しているのに、パケット処理がさらに状態を悪化させている
30
ScyllaDB User Group Japan. 31
高スループットのストレージでは
ScyllaDB User Group Japan.
大雑把に言うと
• DISKは、高性能のSSDでも、同時並列に入出力できるIO数に臨界点が存在する。
• 最大同時実行数を超えたIOが発生すると、(IOキューをもっていても) 失速(ストール)を引き起こす。
OS依存の現在のアプリケーションでは制御できないし、OSが制御しているわけでもない。
DISK IO
32
ScyllaDB User Group Japan.
NVMe SSD
33
https://github.com/avikivity/diskplorer
←
まるで糞詰まりのような
現象である
デジタル世界なのに可笑
しいが、現実に起きてい
る
ScyllaDB User Group Japan. 34
データベースのルネサンス時代
ScyllaDB User Group Japan. 35
出典:RDB技術者のための
NoSQLガイド,秀和システ
ム,2016
Hadoop
・Apache Hadoop
・Cloudera
・MapR
・Hortonworks
スループット重視
(レポーティング指向)
ターンアラウンドタイプ重視
(オペレーション指向) RDB(OLAP, DWH)
・Oracle Exadata
・Teradata
・Netezza
・Redshift
RDB(OLTP)
・Oracle
・SQL Server
・MySQL*
・PostgreSQL*
グラフDB
・Neo4j
スケールアウトできない
(*シャーディングでスケールアウト可)
スケールアウトできる
KVS
・Redies
・Memcache
ワイドカラム
・Cassandra
・ScyllaDB
ドキュメント
・MongoDB
・Couchbase
NoSQL
ScyllaDB User Group Japan.
キーバリュー、ワイドカラム、ドキュメント、グラフ
36
ドキュメント(JSON) グラフ
001:’aaa’
002.’bbb’
003:’ccc’
001,title : “Amazo EC2”
001:price : 3000
001:Author : aaa
002:title : “Cassandra入門”
002:Price : “2000”
{ _id :001,
title : “Amazo EC2”,
price : 3000,
author : {
name : ‘aaa,
address : ‘xxx’
phone : ‘123-1234’
}
}
writed
ScyllaDB User Group Japan. 37
区分 NoSQL
データベース KVS ドキュメントDB グラフDB
データモデル キーバリュー ワイドカラム ドキュメント グラフ
OSS ・Redis
・Memcachd
・Riak
・Cassandra
(Datastax)
・ScyllaDB
・HBase(Hdoop)
・MongoDB
・Couchbase
・Neo4j Community
商用製品 ・Oracle NoSQL DB ・ScyllaDB EE Neo4j EE
Oracle
クラウド ・Google Cloud
Databas
・Amazon
ElasticCache
・Azure Redis Cache
・Amazon
Dynamo DB
・Google
BigTable(HBase)
・Azure Cosmos(ド
キュメントAPP)
・IBM Cloudant
・AWS Neptune
・Azure Cosmos Graph
APP
出典:RDB技術者のためのNoSQLガイド,秀和システム,2016
ScyllaDB User Group Japan.
• マスタ―型(MongoDB)
• P2P型(Peer to Peer, マスターレス, ScyllaDB, Cassandra)
クラスタ―のアーキテクチャー
38
M
S S
コピー
01-30
01-30 01-30
01-05 06-10
11-15
16-2021-25
26-30
・ 1台のマスターと、複数レプリカで構成
・キャパシティーの拡張はスケールアップ
・論理的なデータ数制限はない
・スケールアウト(シャーディング)
01-05
06-10
01-05
26-30
06-10
11-15
11-15
16-20
16-20
21-25
21-25
01-05
・ノード間でクロスでN個のレプリカを持つ
・キャパシティの拡張は水平分散スケールアウト
・高可用性と拡張性の両方を満たす構造
・単一障害点(spof)がない
M
S S
M
S S
M
S S
・・・
ScyllaDB User Group Japan. 39
ScyllaDB
ScyllaDB User Group Japan.
ビックデータ処理PFのツールマッピング
40
Real Time Process
Message Pool
画像/音声
File Store
Near Real Time
Process
Batch Process
Data Store
テキスト
GW
MQTT?
データマート
データレイク
データソース
Data Mart
Service
Queue
画像処理
ScyllaDB User Group Japan. 41
ScyllaDBのクラスタ―及び読み書き
ー基本的にCassandraと同じー
ScyllaDB User Group Japan.
CAP定理
42
https://www.scylladb.com/2018/08/28/scylla-fault-tolerance/
Scyllaは、次のような可用性とパーティション耐性を一
貫性よりも優先しています。
一貫性と高い可用性をネットワークパーティションで
実現することは不可能です
一貫性を犠牲にすれば、高可用性を実現できます
分散型アーキテクチャーでは、どれも同時に3つを達成することはできない
ScyllaDB User Group Japan.
アベイレビリティ
43
ScyllaDB User Group Japan.
アベイレビリティ
44
ScyllaDB User Group Japan.
• Cassandra → スケルアウトオンリ
• ScyllaDB → スケールアップファースト+スケールアウト
スケーラビリティ
45
ScyllaDB User Group Japan.
マルチデータセンタークラスタ―
• どこで書きこんでも、データセンター間で自動的に複製される
• ユーザーはどこからでも読み書きできる
スケーラビリティ
46
大阪
東京
ScyllaDB User Group Japan.
データモデル
47
ScyllaDB RDB
キースペース データベース
テーブル(カラムファミリ) テーブル
カラム カラム
Cassandraと同じ、CQL(Cassandra Query Language)を使用
見た目では、RDBのテーブルを殆ど変わらない。
ScyllaDB User Group Japan.
SQLライクなシンタクス
DDLでオブジェクト作成
• CREATE/INSERT/UPDATE/DELETE
GRANT/REVOKE
SELECT * FROM <table name>
• JOINできない
DMLでデータ操作
• INSERT,UPDATE,DELETE
CQL(Cassandra Query Language)
48
CREATE TABLE mykeyspace.book (
id TEXT,
title TEXT,
author TEXT,
price DECIMAL
PRIMARY KEY (id) );
CREATE KEYSPACE mykeyspace WITH WITH REPLICATION
= {'class': 'SimpleStrategy','replication_factor' : 3};
INSERT INTO mykeyspace.book (id, title, author,price)
VALUES (‘1', ‘scylladb', ‘Avi’, 2500);
SELECT id, title, author, price
FROM mykeyspace.book
WHERE id = ‘1’
ScyllaDB User Group Japan.
テーブル内で行を一意的に識別するキー
パーティションキー
• 1番目のカラムがパーティションになり、データをグループ化できる
• 実データがあるサーバーへのルーティングのためのキー
プライマリキー
49
CREATE TABLE table1 (
c1 TEXT,
c2 TEXT,
c3 DECIMAL,
c4 TIMESTAMP,
PRIMARY KEY (c1, c2) );
ScyllaDB User Group Japan. 50
ScyllaDB(スキュラDB)とは
ScyllaDB User Group Japan.
ScyllaDB(スキュラDB)とは
• リアルタイムビックデータ処理向けのNoSQL
• スケールアップファーストのNoSQL
51
ScyllaDB(スキュラDB)とは、Apache CassandraをJAVAからC++でリプレースし、
Cassandraより10倍以上高速であり、その速さを利用してノード数を「1/5~1/10」に圧
縮できる異次元のデータベースです(スケールアップファーストのクラスター設計思想)。
Cassandraとは、互換性があり、開発はCassandraのドライバ―やCQL、各種コネクター、
CLIなどをそのまま利用できます。
ScyllaDB User Group Japan.
ScyllaDBチームはKVMハイパーバイザーを設計、開発した人達が中心。KVMは、GCP、AWS、OpenStackなど
の多くのクラウド環境でデフォルトのハイパーバイザーである。
ScyllaDBの創始者は、 Avi Kivity氏
52
https://www.scylladb.com/2015/04/20/seastar-meetup/
当初、DockerのようなUnikernelを開発し
ていて、Dockerとは競合していたが最終
的にはDockerの方が広がり、そこで製品
化を断念。このUnikernelの基礎技術を使
って、Hadoop、Cassandra、Kafka等の
ストレージエンジンの高速化に関わって
いた。この時から開発言語として、C++
をベースにし、最終的にCassandraに絞
って製品化したのが、ScyllaDBである。
2015年には、αリリースを出し、現在に
至っている。
ScyllaDB User Group Japan.
• 設立 2015年
• 社名 ScyllaDB, Inc
• 従業員 50人強
• 拠点
United States Headquarters/Israel
Office
53
カリフォルニア州
ScyllaDB User Group Japan.
Investor
54
ScyllaDB User Group Japan.
Users
55
ScyllaDB User Group Japan.
Open Source(GPL v3.0 vs Commercial License)
56
Commercial License →オープソース機能+ {SLA, セキュリティ, 運用}
ScyllaDB User Group Japan.
Open Source Licenses
• Free Software Foundation’s GNU AGPL v3.0
• Current version 2.3, September 19, 2018
Driver Licenses
• Apache Cassandra drivers: Apache License v2.0
Enterprise Licenses
• ScyllaDB Proprietary
• Current version Scylla Enterprise 2018.1.4(Open Source v2.1)
License
57
ScyllaDB User Group Japan.
如何なるCassandraアプリケーションでも、IPが合って入れば接続できる!
Apache Cassandra 2.2のすべて、Apache Cassandra 3.xの一部の機能が備わっている
特に、以下のインターフェースはApache Cassandraと互換性がある。
• すべてのApache Cassandraドライバ
• プロトコル:CQL(Cassandra Query Lanague)、Thrift、JMX
• ツール:cqlsh、nodetool、cassandra-stress、及びすべてのCassandra 2.2ツール
• SSTableフォーマット
Cassandraとの互換性
58
詳細は、こちらを参照要
https://docs.scylladb.com/using-scylla/cassandra-compatibility/
ScyllaDB User Group Japan. 59
ScyllaDB User Group Japan. 60
Survey of 1,850 attendees AWS re:Invent 2017
ScyllaDB User Group Japan.
Scylla Beneifts
61
i3.2xlarge,8vCPU,27(EUC),61GiB Memory,1x1900 NVMe SSD,
0.862USD/時間, 東京
ScyllaDB User Group Japan.
Scylla Beneifts
62
i3.2xlarge,8vCPU,27(EUC),61GiB Memory,1x1900 NVMe SSD,
0.862USD/時間, 東京
ScyllaDB User Group Japan.
Scylla Beneifts
63
i3.16xlarge,64vCPU,200(EUC),488GB Memory,8x1900
NVMe SSD,5.856USD/時間,東京
ScyllaDB User Group Japan.
Scylla Beneifts
64
Latency(MS)
Time
High
Low
ScyllaDB User Group Japan.
Scylla Beneifts
65
CassandraをJavaからC++でリプレース
C ++はしばしば1970年代のC言語に根ざした伝統的な命令型言語であると考えられているが、過
去数年間、完全に近代化されており、ラムダ、メタプログラミング、関数型プログラミングなど
の現代的パラダイムに移行している
ScyllaDB User Group Japan.
Scylla Beneifts
66
Cassandraに接続するために何を使用していても、現在の実装を利用し、IPアドレスを
Scyllaクラスタに変更するだけで動作する
ScyllaDB User Group Japan.
Apache Cassandra vs Scylla
67
ScyllaDB User Group Japan.
Scylla vs Other Big Data Product
68
ScyllaDB User Group Japan.
• スループット重視
• シーケンスアクセス又は
粗なランダムIO
• 背景にはGoogle
• Hive, Presto, Pig
• ジョイン、集計処理可能
Hadoopのデータ処理
69
ScyllaDB User Group Japan.
• スループット重視
• 入力はシーケンスアクセス又は
粗なランダムアクセス
• 出力は粗なランダムIO
• DWHエンジン
• ジョイン、集計処理可能(得意)
OLAP系のRDBのデータ処理(DWH)
70
ScyllaDB User Group Japan.
NoSQLのデータ処理
71
• タンアラウンドタイムがRDBより速い
• 超ランダムなIOに強い
• GoogleやFacebook
• Cassandra, DyanmoDB, HBase, MongoDB(ABC順)
• ジョイン、集計処理はできないか(苦手)
• ジョイン、集計処理は、Sparkなどを連携して可能
NoSQL
NoSQL
NoSQL
ScyllaDB User Group Japan.
OLTP系のRDBのデータ処理
72
• タンアラウンドタイム重視
• ランダムなIOに強い
• Oralce, Microsoft, IBM
• Oracle, SQL Server, MySQL, PostgreSQL
• ジョイン、集計処理可能
NoSQL
NoSQL
RDB
ScyllaDB User Group Japan.
IoTに求められるデータ処理の特徴
73
NoSQL
NoSQL
• 短いタンアラウンドタイム+高スループット
• 粗なランダムなIOに強い
• Scyllaが代替案になる
ソースからダイレク
トではなく、メッセ
ージングツールから
入ってくる
サードパーティーの
Query Engine、アプ
リケーションフレー
ムワークでデータマ
ートを切り出す
ScyllaDB User Group Japan. 74
ScyllDBの高速性に迫る
• アーキテクチャー
• ネットワーク
• DISK IO
• Cassandraの改善
ScyllaDB User Group Japan.
アーキテクチャー
75
shared-nothing
• コア毎のシャード
• 独自のタスクスケジューラ
• 非同期
thread pools
• 割り込み
• ロック
ScyllaDB User Group Japan.
コア毎のシャード
• マルチコアハードウェアのパワーを極限まで引き出す
• 各シャードは独自のメモリ、ネットワーク、I/O、自分のデータを持つ
• ロックレスのコア間通信
独自のタスクスケジューラ
• タスクは、自分に与えられたデータだけを集中して処理
すべて非同期
• ロックレス、データはすべてCPUにストリーム
• コア間で明示的にデータの受け渡し
76
ScyllaDB User Group Japan. 77
食事はお行儀よく
ScyllaDB User Group Japan.
高スループットのサーバアプリケーションの開発のためのオープソースフレームワーク(C++)
SeaStarの推奨ハードウェア構成
• CPU あるだけ、マルチコアとNUMAフレンドリ
• NICs 10GB~40GB
• DISK IOPS数の多い高速SSD
• クライアントマシン サーバと異なるマシンで複数実行することをお勧め
Seastarライセンス
• Apache License、Version 2.0
• Data Plane Development Kit(DPDK)バージョン1.8.0以降を使用
Seastar
78
http://seastar.io
ScyllaDB User Group Japan.
DPDK(Data Plane Development Kit)とは、ネットワークの高速化, ネットワーク処理に特化したアプリケーショ
ンを作成するためのソフトウェアライブラリ(C++)
アプリケーションはDPDKが提供するライブラリを使用することで、NICの送受信データとアプリケーション間でダイレクト
にアクセス可能
• 2010年にIntelによって開発
• 2013年にDPDK.orgに設立
• BSD License
DPDK(Data Plane Development Kit)
79
https://www.dpdk.org/
ScyllaDB User Group Japan.
統一キャッシュ―(Unified Cache)
80
Cassandraのキャッシングは複雑である。キーキャッ
シング、行キャッシング、Linuxキャッシング、ヒープ、
オフヒープなど膨大な量のチューニングが求められる。
RAMの半分はmemtablesや
その他のバックエンド要件
に使用される。
Scyllaは残りの半分をキャ
ッシュに使用する。
チューニングは不要である。
ScyllaDB User Group Japan.
• P2P型のクラスタ―では、ノードの追加、ノードの復旧、バランシングで大量のトラフィックが発生する
• カーネルバイパスのためにオーバヘッドが発生しない。アプリケーションで思い描いたデータ通信を行う
• 下記は、コミュニティー版v2.3まで
Scyllaストリーミング
81
ScyllaDB User Group Japan.
v2.4(現在2.3)では、sstableにダイレクトに書き込みを行う
Scyllaストリーミング
82
https://www.scylladb.com/2018/08/14/upcoming-improvements-scylla-streaming/
3.8xlarge,32vCPU,99ECU,244GiB Memory,4x1900 NVMe SSD
1.89TiB,66分,765MiB / 1sec
ScyllaDB User Group Japan.
DISK IOの並列度をScylllaが最適化し、DISK IOでに糞詰まりを起こさず、常に一定のスループットを引き出す。
ディスクの最大同時実行性(max-io-requests)をScyllaがテストして設定する
• /etc/scylla.d/io.conf
SEASTAR_IO="--max-io-requests=33"
Scylla I/Oスケジューラ
83
https://www.scylladb.com/2018/04/19/scylla-i-o-scheduler-3/
ScyllaDB User Group Japan.
ユーザ空間でIOをキューイングし,ディスクの最大同時実行性の範囲で下位層とIOを行う
下位層の糞詰まりを避けることで、安定・最適なIOを維持する
内部キューをもっている最新のSSDさえ、要求をOS/ディスクに任せるだけでは、失速(ストール)などの弊害を引き起こす
ユーザ空間ディスクI/Oスケジューラの設計:Scyllaの例
84
左側では、ユーザ空間のプロセスによって生
成されたリクエストは、カーネルをスルーし、
下にレイヤーに到達します。過負荷の制御は
できません。右側では、ディスクI / Oスケジ
ューラが要求とカーネルの間に配置されるよ
うになりました。これらの要求を意味のある
クラス(AとB)に分類し、バランスを保ち、
下位レイヤが過負荷にならないようにすしま
す。
https://www.scylladb.com/2018/04/19/scylla-i-o-scheduler-3/
https://www.scylladb.com/2017/10/05/io-access-methods-scylla/
従来型 ScyllaDB
ScyllaDB User Group Japan.
自律DB(Autonomous)
85
インストール時には、I / O、RAM、CPU、およびネットワーク用にチューニングされる。ネ
ットワーク、ディスク、CPUに入る5種類のリクエスト(commitlog、memtable、compaction、
query、repair)
ScyllaDB User Group Japan.
• ユーザー処理に負担を掛けないようにCompaction Controllerが自動制御しバックグラウンド実行
• Scyllaは、STCS(Level Tiered Compaction Strategy)、LCS(Leveled Compaction
Strategy)、TWCS(Time Window Compaction Strategy)およびDTCS(Date Tiered
Compaction Strategy)をサポート
Scylla Compatction
86
https://www.scylladb.com/2018/06/12/scylla-leverages-control-theory/
a real-world closed-loop control system
ScyllaDB User Group Japan.
• パーティションキーによる実装
ヒットするとめちゃくちゃ検索効率がいいが、ヒットしないとフールスキャンになる
• マティリアズドビュー(Materialized View)
通常のビューとは違って、クエリの結果をテーブルにキャッシュ―している。ベーステーブルが変更されると、
自動的に変更される。検索には優れているが、ストレージを逼迫する
• Cassandraのセカンダリインデックスは、ローカルインデックス方式
書き込みは良い、読み込みは潜在的にすべてのノードを読む必要性があり、
大規模クラスタ―では、拡張性、有効性に悩む
• ScyllaのSIは、MVに基づくグローバルインデックス方式
各索引に対してマテリアライズド・ビューが作成される。
Scyllaオープンソースリリース2.3ーセカンダリインデックス(SI)
87
https://www.scylladb.com/2017/11/03/secondary/
ScyllaDB User Group Japan.
続き
88
マテリアライズド・ビューでキーには、パーティション・キーおよびクラスタリング・キーが存
在し、検索は、マテリアライズド・ビューを参照し、ダイレクトに行にアクセスする。
フェーズ(1)では、クエリはノード7
に到着し、ノード7はクエリのコーデ
ィネータとして機能する。ノードは、
索引付けされた列を問合せしているた
め、フェーズ(2)で、
「user@example.com」の索引表の行
を持つノード2の索引読取り表を発行
します。クエリは、フェーズ(3)で
使用されてインデックス付きテーブル
の内容を取得するユーザーIDのセット
を返します。
ScyllaDB User Group Japan.
ScyllaDB v2.0からパーティションのサブセットのみをキャッシュ
• パーティション全部を持ってこない
• 読み込みの無駄な増幅を回避
Row-granularity Population
89
https://www.scylladb.com/2018/07/26/how-scylla-data-cache-works/
ScyllaDB User Group Japan.
データはパーティション単位でキャッシュし、パージもパーティション単位
• 伝統的なCassandra実装
• これは遅延を誘発
従来では
90
ScyllaDB User Group Japan. 91
これでScyllaDBの高速性に関する主な箇所は
説明させて頂きました!
ScyllaDBは、日々進化しています。
次をお楽しみにしてください。

More Related Content

What's hot

Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド崇介 藤井
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Web Services Japan
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送Google Cloud Platform - Japan
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...NTT DATA Technology & Innovation
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについてKumazaki Hiroki
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...whywaita
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善Ito Takayuki
 
TiDBのトランザクション
TiDBのトランザクションTiDBのトランザクション
TiDBのトランザクションAkio Mitobe
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタSatoyuki Tsukano
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)Keigo Suda
 

What's hot (20)

Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについて
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
 
TiDBのトランザクション
TiDBのトランザクションTiDBのトランザクション
TiDBのトランザクション
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
 

Similar to スケールアップファーストのNoSQL、ScyllaDB(スキュラDB)

もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~griddb
 
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -yoyamasaki
 
OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告Mitsuhiro SHIGEMATSU
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用についてLINE Corporation
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconKazuhiro Sera
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
about Eucalyptus (20121026) NII
about Eucalyptus (20121026) NIIabout Eucalyptus (20121026) NII
about Eucalyptus (20121026) NIIOsamu Habuka
 
OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門Dell TechCenter Japan
 
OSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack OverviewOSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack Overviewirix_jp
 
20131211 Neutron Havana
20131211 Neutron Havana20131211 Neutron Havana
20131211 Neutron HavanaAkihiro Motoki
 
Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Yukio Kumazawa
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月VirtualTech Japan Inc.
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC EnterpriseYusukeKuramata
 
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~Masahito Zembutsu
 
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swiftirix_jp
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」Nobuyuki Tamaoki
 

Similar to スケールアップファーストのNoSQL、ScyllaDB(スキュラDB) (20)

もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
 
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -
 
OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告OpenStack Summit November 2014 Paris出張報告
OpenStack Summit November 2014 Paris出張報告
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用について
 
ヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージ
 
[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成
[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成
[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
about Eucalyptus (20121026) NII
about Eucalyptus (20121026) NIIabout Eucalyptus (20121026) NII
about Eucalyptus (20121026) NII
 
OpenStack概要
OpenStack概要OpenStack概要
OpenStack概要
 
OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門
 
OSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack OverviewOSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack Overview
 
20131211 Neutron Havana
20131211 Neutron Havana20131211 Neutron Havana
20131211 Neutron Havana
 
Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
 
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
分散KVSをサービス化してみた ~Okuyama(KVS)もFusion-IO(ioDrive)もあるんだよ~
 
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
 

More from 昌桓 李

Neo4j Stream, [RDB/NoSQL]Kafka Connector CDC(Change Data Captuer)の紹介
Neo4j Stream, [RDB/NoSQL]Kafka Connector CDC(Change Data Captuer)の紹介Neo4j Stream, [RDB/NoSQL]Kafka Connector CDC(Change Data Captuer)の紹介
Neo4j Stream, [RDB/NoSQL]Kafka Connector CDC(Change Data Captuer)の紹介昌桓 李
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019昌桓 李
 
MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019昌桓 李
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi昌桓 李
 
グラフデータの視覚化ツールーTom Sawyer Perspectives
グラフデータの視覚化ツールーTom Sawyer Perspectivesグラフデータの視覚化ツールーTom Sawyer Perspectives
グラフデータの視覚化ツールーTom Sawyer Perspectives昌桓 李
 
MongoDB Atlasアカウント取得
MongoDB Atlasアカウント取得MongoDB Atlasアカウント取得
MongoDB Atlasアカウント取得昌桓 李
 
MongoDB社の製品紹介 2019-MongoDB EA&Atlas
MongoDB社の製品紹介 2019-MongoDB EA&AtlasMongoDB社の製品紹介 2019-MongoDB EA&Atlas
MongoDB社の製品紹介 2019-MongoDB EA&Atlas昌桓 李
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j昌桓 李
 
Neo4j高可用性クラスタ― vs 大規模分散クラスタ―の解説
Neo4j高可用性クラスタ― vs 大規模分散クラスタ―の解説Neo4j高可用性クラスタ― vs 大規模分散クラスタ―の解説
Neo4j高可用性クラスタ― vs 大規模分散クラスタ―の解説昌桓 李
 

More from 昌桓 李 (9)

Neo4j Stream, [RDB/NoSQL]Kafka Connector CDC(Change Data Captuer)の紹介
Neo4j Stream, [RDB/NoSQL]Kafka Connector CDC(Change Data Captuer)の紹介Neo4j Stream, [RDB/NoSQL]Kafka Connector CDC(Change Data Captuer)の紹介
Neo4j Stream, [RDB/NoSQL]Kafka Connector CDC(Change Data Captuer)の紹介
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019
 
MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
 
グラフデータの視覚化ツールーTom Sawyer Perspectives
グラフデータの視覚化ツールーTom Sawyer Perspectivesグラフデータの視覚化ツールーTom Sawyer Perspectives
グラフデータの視覚化ツールーTom Sawyer Perspectives
 
MongoDB Atlasアカウント取得
MongoDB Atlasアカウント取得MongoDB Atlasアカウント取得
MongoDB Atlasアカウント取得
 
MongoDB社の製品紹介 2019-MongoDB EA&Atlas
MongoDB社の製品紹介 2019-MongoDB EA&AtlasMongoDB社の製品紹介 2019-MongoDB EA&Atlas
MongoDB社の製品紹介 2019-MongoDB EA&Atlas
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
 
Neo4j高可用性クラスタ― vs 大規模分散クラスタ―の解説
Neo4j高可用性クラスタ― vs 大規模分散クラスタ―の解説Neo4j高可用性クラスタ― vs 大規模分散クラスタ―の解説
Neo4j高可用性クラスタ― vs 大規模分散クラスタ―の解説
 

スケールアップファーストのNoSQL、ScyllaDB(スキュラDB)

  • 1. ScyllaDB User Group Japan. スケールアップファーストのNoSQL、ScyllaDB(スキュラDB) 高速化とノード縮小の原点に迫る クリエーションライン株式会社 データエンジニアリングチーム LEE CHANGHWAN 1
  • 2. ScyllaDB User Group Japan. ScyllaDBユーザーグループ 2 https://scylladb-usergroup-jp.connpass.com/ **設立目的** ScyllaDB(Scylla、スキュラと読む)ユーザーグループは、ScyllaDBに関する情報発信、会 員相互間の情報共有などを目的として設立しています。 https://www.scylladb.com/open-source/
  • 3. ScyllaDB User Group Japan. 設立 • 2006年1月 事業概要 • クラウドインテグレーション事業 • データ分析サービス事業 • DevOps関連サービス事業 クリエーションラインのホームページ • https://www.creationline.com クリエーションライン株式会社 3
  • 4. ScyllaDB User Group Japan. 自己紹介 李 昌桓 (LEE CHANGHWAN, @awk256) • データエンジニアリングチーム所属 • データベースが大好きなエンジニア。ビックデータ処理基盤のアーキテクトとして活動している。 著書 • グラフデータベースNeo4jの他 4
  • 5. ScyllaDB User Group Japan. 計算資源をめぐる大変革の時代 • CPUのコア数の暴走 • 高コアのCPUでは • 高帯域のネットワークでは • 高スループットのストレージでは データベースのルネサンス時代 • ScyllaDBのクラスタ―及び読み書き • ScyllaDB(スキュラDB)とは • ScyllaDBの高速性に迫る アゼンダー 5
  • 6. ScyllaDB User Group Japan. 6 計算資源をめぐる大変革の時代
  • 7. ScyllaDB User Group Japan. Slackに1行のメッセージから流れた(from木内) • 李さん、こんなのがあるらしいよ! • https://www.scylladb.com/ Topページをみると「The Real Time Big Database」 • Cassandra10倍速い,ノード毎に100万IOPS、オペレーションの99%が1ms、 Shrink Nodes(1/5~1/10) • うさん臭いなあ~ 7
  • 8. ScyllaDB User Group Japan. ホワイトペーパのちょっと読んでみるも • 高速である理由を説明する各種用語が難しい • さらに、高速である必要性が理解できない キーワードを調べながら数カ月が経った • ScyllaDBは、計算資源をめぐるパラダイムのシフトを的確にとらえている • 疑心暗鬼のところからある種の信念が芽生え始めた。 これは世の中のためになる! 8 https://www.scylladb.com/product/technology/
  • 9. ScyllaDB User Group Japan. 計算資源をめぐって大変革が起きている • 高コア数 • ラージメモリ(RAM) • 高帯域のネットワーク • 高スループットのストレージ その理由は • 計算資源の最大の買い手であるクラウドプロバイダーが求めている • マルチディア、機械学習、AIなど廉価でリッチな計算資源のニーズが爆発的な増加している 9
  • 10. ScyllaDB User Group Japan. 10 Up to 40 Cores and 2TB RAM
  • 11. ScyllaDB User Group Japan. 11 10GbE/40GbE
  • 12. ScyllaDB User Group Japan. 12 V-NAND SSD 970 PRO 1TB SAMSUNG Sequential Read 3,500MB/s Sequential Write 2,700BM/s
  • 13. ScyllaDB User Group Japan. 別に、それはそれでいいじゃないか? • 高速にデータ処理が出来て • 高速に転送出来て • 高速に保存できるはず だが、現代的なハイエンドサーバーをデータベースで利用しようとすると • CPU/ネットワーク/DISK IOなどでボトルネックを引き起こす 13
  • 14. ScyllaDB User Group Japan. 14 高コア数/ビックメモリ/高帯域ネットワーク/高スループットのストレージ 専用機器や OSに任せておけば よかった時代 サーバーアプリケーションに 改革が求められている 殆どのDBアプリケーションが 対応に乗り遅れている
  • 15. ScyllaDB User Group Japan. 15 CPUのコア数の暴走
  • 16. ScyllaDB User Group Japan. 16 ちょっと、コンピュータの仕組みを復習しよう • CPU(Central Processing Unit, 中央演算装置) • メインメモリ(主記憶装置,一時記憶装置) • 入出力装置
  • 17. ScyllaDB User Group Japan. 17 1978年、T. Hoareの予言的なレポート • Communication Sequential Processes http://weblab.cs.uml.edu/~bill/cs515/CSP_Hoare_78.pdf • CPUは、クロック数を上げることに限界に達する • 未来のコンピュータは、より多くのコア数を手にする
  • 18. ScyllaDB User Group Japan. CPUのクロック周波数とは、0と1のビット演算を何回できるか、つまりCPUの性能 • 1Hz:1秒あたり1回 • 1KHz:1秒あたり1000回 • 1MHz:1秒あたり100万回 • 1GHz:1秒あたり10億回(これが一般的に) • 1THz:1秒あたり1兆回 18 1971年:Intel 4004 → 108KHz 1976年:Intel 8086 → 5MHz 1989年:Intel i486 → 100MHz 1993年:Intel Pentium → 300MHz 2000年:Intel Pentium 4 → 1.40 ~ 3.80GHz 2008年:Intel Core i7 → 2.66 ~ 3.20GHz 2017年:Intel Core i7 7740X → 4.30 ~ 4.50GHz 2018年:Intel Core i7 8086K → 5.00GHz インテルがCPUを作り始めて47年で、クロック周波数は46300倍まで進歩
  • 19. ScyllaDB User Group Japan. Core(コア)とは、CPUと称する装置のなかの計算ユニットを称するものである? つまり、CoreとはCPUであり、CPUはCoreである? 現代では、コア数はCPUの性能を称する代名詞になっている。 19 1 シングルコア 1 2 1 2 デュアルコア 2005年頃 Athlon 64 X2 Pentium D 1 2 クアッドコア 2006年頃 Core 2 Quad Phenom X4
  • 20. ScyllaDB User Group Japan. もう、コア数の暴走は止まらなくなっている 20 • 1コア:シングルコア • 2コア:デュアルコア • 3コア:トリプルコア • 4コア:クアッドコア • 6コア:ヘキサコア • 8コア:オクタコア • 10コア:デカコア もう、数字読みで〇〇コアと呼ぶのが一般化されているのではないか
  • 21. ScyllaDB User Group Japan. 複数のCPUとメモリが1つのシステムの載せられたアーキテクチャー(トポロジーの変化) • SMPアーキテクチャーではコア数の暴走により、CPUとメモリが不整合が起きるようになった • CPUとメモリのIOパスがへ並列化されることで、格段にスループットが上がる • 仮に14GB/1secのメモリパスを並列化すると、28GB/1secになる NUMA(Non-uniform memory access) 21 http://frankdenneman.nl/2016/07/07/numa-deep-dive-part-1-uma-numa/
  • 22. ScyllaDB User Group Japan. 22 スレッドとは • 伝統的なコアは、同時に1コアが1つの仕事しかできない • 現代的なコアは、同時に1コアが複数の仕事をする • もはや、コンピューターの性能は、コア数とスレッド数
  • 23. ScyllaDB User Group Japan. 23 高コア数のCPUでは
  • 24. ScyllaDB User Group Japan. CPUの働き方 • 割り込み 割り込みは、CPUとOSでサポートされる機能で、「今やっている処理に割り込んで特別な処理を実行する」こと CPUに割り込みが生じると、現在実行している処理(命令)を停止して別の処理を実行する 周辺機器からの情報を、他の作業をしながらも取り落とすことなく受け取る、例えば、キーボードの入力とか それで、CPU資源を有効利用、応答性の向上、例外処理の効率、正確なタイミングの取得 人に例えば、会議中に携帯で業務連格を受け取るとか、特に会議に重大な問題が起きるわけではない • ロック 複数のプロセス(又はスレッド)が共有メモリを使用してデータ処理をしているときに、 あるプロセスに独占的に使わせるための制御 つまり、データベースのようにデータの不整合を避けるための措置である 24
  • 25. ScyllaDB User Group Japan. Linuxにおけるスレッド間の通信 25 ほとんどのアプリケーションは、ロ ックを使用してスレッド間通信を実 装しています。 この方法は一部のアプリケーション では効果的ですが、データ集約型の 多数のコアアプリケーションではス ケーラビリティの問題があります。 ロックを取ったり解放したりするた めに必要な労力は、サーバーの規模 に応じて大きくなります。 https://www.scylladb.com/2018/02/15/memory-barriers-seastar-linux/
  • 26. ScyllaDB User Group Japan. thread-per-connection方式のアプリケーション これは、接続が増えるとスレット数も比例して増える。 • 同時接続が増える単に実行スレッド数も増える • スレッド数が増えるとCPUはビージ状態になる • さらに、スレッドはヘビーなオブジェクトでもあり、それぞれメモリを消費する 結局、大量リソースを消費するために、単純アプリケーションでしが、上手く働かない。 需給のバランスを取ることは非常に難しく、短命で終了! 26
  • 27. ScyllaDB User Group Japan. thread poolsのアプリケーション方式 これは、多数の接続が、より少ない数のスレッド(スレッドプール)を共有して処理する。 スレッドの暴走を抑えるために、現在の殆どのアプリケーションで実装している。 • 書き込み可能な共有データが存在する場合、プロセッサーからプロセッサーへのキャッシュデータの移動が必要で ある。 • あるプロセッサーに割り当てられたデータへ別のプロセッサーからアクセスする必要も出てくる。 • CPUの過剰な働きが制御できない OSの使命は、CPU使用率を最大化すること。スレッド(Linuxの処理の単位)をちょっと待たせれば、順番が回ってくるところ、 別のCPUに移動させてしまい、結果的にメモリアクセスの再配など遅延を引き起こす データ集約型処理では、暴走するロックを回避できない、CPUの過剰な働きが制御できないために、十数コアまでが 限界だと言われている。 27
  • 28. ScyllaDB User Group Japan. 28 高帯域のネットワークでは
  • 29. ScyllaDB User Group Japan. そもそも • 専用H/Wで処理したものが、クラウドになってからソフトウェア化し、大幅にパフォーマンスが落ちているパターン • アプリケーションが10GbE以上のNICに対応していないパターン • ネットワークは高速になっており、コア数は各段に増えているが、どのコアもパケットを処理をする能力をもっていな い。ハイウェイ(ネットワーク帯域)は出来ているが、陳腐化した物流システムが物流を邪魔しているような状態 29 10GBps の ネ ッ ト ワ ー ク で 1024Byteのパケットを処理す る2GHz プロセッサーが、パ ケットあたりにわずか1670ク ロックサイクルしかない。 パケットごとに多数のクロック サイクルが使用可能な場合には、 発想を変えるべきではないか
  • 30. ScyllaDB User Group Japan. カーネルで受信パケットカウント処理を実行する場合の処理シーケンス 1. NICがカーネルに割り込みを発生させる 2. カーネルが割り込み処理するために、コンテキストスイッチを発生させる 3. カーネルがNICに対応するドライバー処理を実行する 4. カーネルがネットワークスタック処理を実行する 5. カーネルがパケットカウント処理(アプリケーション)を実行する 2,3,4が特にソフトウェア処理上のオーバヘッドになる 高コア数になって、従来の「割り込み/ロック」という思想の処理方式が崩壊しているのに、パケット処理がさらに状態を悪化させている 30
  • 31. ScyllaDB User Group Japan. 31 高スループットのストレージでは
  • 32. ScyllaDB User Group Japan. 大雑把に言うと • DISKは、高性能のSSDでも、同時並列に入出力できるIO数に臨界点が存在する。 • 最大同時実行数を超えたIOが発生すると、(IOキューをもっていても) 失速(ストール)を引き起こす。 OS依存の現在のアプリケーションでは制御できないし、OSが制御しているわけでもない。 DISK IO 32
  • 33. ScyllaDB User Group Japan. NVMe SSD 33 https://github.com/avikivity/diskplorer ← まるで糞詰まりのような 現象である デジタル世界なのに可笑 しいが、現実に起きてい る
  • 34. ScyllaDB User Group Japan. 34 データベースのルネサンス時代
  • 35. ScyllaDB User Group Japan. 35 出典:RDB技術者のための NoSQLガイド,秀和システ ム,2016 Hadoop ・Apache Hadoop ・Cloudera ・MapR ・Hortonworks スループット重視 (レポーティング指向) ターンアラウンドタイプ重視 (オペレーション指向) RDB(OLAP, DWH) ・Oracle Exadata ・Teradata ・Netezza ・Redshift RDB(OLTP) ・Oracle ・SQL Server ・MySQL* ・PostgreSQL* グラフDB ・Neo4j スケールアウトできない (*シャーディングでスケールアウト可) スケールアウトできる KVS ・Redies ・Memcache ワイドカラム ・Cassandra ・ScyllaDB ドキュメント ・MongoDB ・Couchbase NoSQL
  • 36. ScyllaDB User Group Japan. キーバリュー、ワイドカラム、ドキュメント、グラフ 36 ドキュメント(JSON) グラフ 001:’aaa’ 002.’bbb’ 003:’ccc’ 001,title : “Amazo EC2” 001:price : 3000 001:Author : aaa 002:title : “Cassandra入門” 002:Price : “2000” { _id :001, title : “Amazo EC2”, price : 3000, author : { name : ‘aaa, address : ‘xxx’ phone : ‘123-1234’ } } writed
  • 37. ScyllaDB User Group Japan. 37 区分 NoSQL データベース KVS ドキュメントDB グラフDB データモデル キーバリュー ワイドカラム ドキュメント グラフ OSS ・Redis ・Memcachd ・Riak ・Cassandra (Datastax) ・ScyllaDB ・HBase(Hdoop) ・MongoDB ・Couchbase ・Neo4j Community 商用製品 ・Oracle NoSQL DB ・ScyllaDB EE Neo4j EE Oracle クラウド ・Google Cloud Databas ・Amazon ElasticCache ・Azure Redis Cache ・Amazon Dynamo DB ・Google BigTable(HBase) ・Azure Cosmos(ド キュメントAPP) ・IBM Cloudant ・AWS Neptune ・Azure Cosmos Graph APP 出典:RDB技術者のためのNoSQLガイド,秀和システム,2016
  • 38. ScyllaDB User Group Japan. • マスタ―型(MongoDB) • P2P型(Peer to Peer, マスターレス, ScyllaDB, Cassandra) クラスタ―のアーキテクチャー 38 M S S コピー 01-30 01-30 01-30 01-05 06-10 11-15 16-2021-25 26-30 ・ 1台のマスターと、複数レプリカで構成 ・キャパシティーの拡張はスケールアップ ・論理的なデータ数制限はない ・スケールアウト(シャーディング) 01-05 06-10 01-05 26-30 06-10 11-15 11-15 16-20 16-20 21-25 21-25 01-05 ・ノード間でクロスでN個のレプリカを持つ ・キャパシティの拡張は水平分散スケールアウト ・高可用性と拡張性の両方を満たす構造 ・単一障害点(spof)がない M S S M S S M S S ・・・
  • 39. ScyllaDB User Group Japan. 39 ScyllaDB
  • 40. ScyllaDB User Group Japan. ビックデータ処理PFのツールマッピング 40 Real Time Process Message Pool 画像/音声 File Store Near Real Time Process Batch Process Data Store テキスト GW MQTT? データマート データレイク データソース Data Mart Service Queue 画像処理
  • 41. ScyllaDB User Group Japan. 41 ScyllaDBのクラスタ―及び読み書き ー基本的にCassandraと同じー
  • 42. ScyllaDB User Group Japan. CAP定理 42 https://www.scylladb.com/2018/08/28/scylla-fault-tolerance/ Scyllaは、次のような可用性とパーティション耐性を一 貫性よりも優先しています。 一貫性と高い可用性をネットワークパーティションで 実現することは不可能です 一貫性を犠牲にすれば、高可用性を実現できます 分散型アーキテクチャーでは、どれも同時に3つを達成することはできない
  • 43. ScyllaDB User Group Japan. アベイレビリティ 43
  • 44. ScyllaDB User Group Japan. アベイレビリティ 44
  • 45. ScyllaDB User Group Japan. • Cassandra → スケルアウトオンリ • ScyllaDB → スケールアップファースト+スケールアウト スケーラビリティ 45
  • 46. ScyllaDB User Group Japan. マルチデータセンタークラスタ― • どこで書きこんでも、データセンター間で自動的に複製される • ユーザーはどこからでも読み書きできる スケーラビリティ 46 大阪 東京
  • 47. ScyllaDB User Group Japan. データモデル 47 ScyllaDB RDB キースペース データベース テーブル(カラムファミリ) テーブル カラム カラム Cassandraと同じ、CQL(Cassandra Query Language)を使用 見た目では、RDBのテーブルを殆ど変わらない。
  • 48. ScyllaDB User Group Japan. SQLライクなシンタクス DDLでオブジェクト作成 • CREATE/INSERT/UPDATE/DELETE GRANT/REVOKE SELECT * FROM <table name> • JOINできない DMLでデータ操作 • INSERT,UPDATE,DELETE CQL(Cassandra Query Language) 48 CREATE TABLE mykeyspace.book ( id TEXT, title TEXT, author TEXT, price DECIMAL PRIMARY KEY (id) ); CREATE KEYSPACE mykeyspace WITH WITH REPLICATION = {'class': 'SimpleStrategy','replication_factor' : 3}; INSERT INTO mykeyspace.book (id, title, author,price) VALUES (‘1', ‘scylladb', ‘Avi’, 2500); SELECT id, title, author, price FROM mykeyspace.book WHERE id = ‘1’
  • 49. ScyllaDB User Group Japan. テーブル内で行を一意的に識別するキー パーティションキー • 1番目のカラムがパーティションになり、データをグループ化できる • 実データがあるサーバーへのルーティングのためのキー プライマリキー 49 CREATE TABLE table1 ( c1 TEXT, c2 TEXT, c3 DECIMAL, c4 TIMESTAMP, PRIMARY KEY (c1, c2) );
  • 50. ScyllaDB User Group Japan. 50 ScyllaDB(スキュラDB)とは
  • 51. ScyllaDB User Group Japan. ScyllaDB(スキュラDB)とは • リアルタイムビックデータ処理向けのNoSQL • スケールアップファーストのNoSQL 51 ScyllaDB(スキュラDB)とは、Apache CassandraをJAVAからC++でリプレースし、 Cassandraより10倍以上高速であり、その速さを利用してノード数を「1/5~1/10」に圧 縮できる異次元のデータベースです(スケールアップファーストのクラスター設計思想)。 Cassandraとは、互換性があり、開発はCassandraのドライバ―やCQL、各種コネクター、 CLIなどをそのまま利用できます。
  • 52. ScyllaDB User Group Japan. ScyllaDBチームはKVMハイパーバイザーを設計、開発した人達が中心。KVMは、GCP、AWS、OpenStackなど の多くのクラウド環境でデフォルトのハイパーバイザーである。 ScyllaDBの創始者は、 Avi Kivity氏 52 https://www.scylladb.com/2015/04/20/seastar-meetup/ 当初、DockerのようなUnikernelを開発し ていて、Dockerとは競合していたが最終 的にはDockerの方が広がり、そこで製品 化を断念。このUnikernelの基礎技術を使 って、Hadoop、Cassandra、Kafka等の ストレージエンジンの高速化に関わって いた。この時から開発言語として、C++ をベースにし、最終的にCassandraに絞 って製品化したのが、ScyllaDBである。 2015年には、αリリースを出し、現在に 至っている。
  • 53. ScyllaDB User Group Japan. • 設立 2015年 • 社名 ScyllaDB, Inc • 従業員 50人強 • 拠点 United States Headquarters/Israel Office 53 カリフォルニア州
  • 54. ScyllaDB User Group Japan. Investor 54
  • 55. ScyllaDB User Group Japan. Users 55
  • 56. ScyllaDB User Group Japan. Open Source(GPL v3.0 vs Commercial License) 56 Commercial License →オープソース機能+ {SLA, セキュリティ, 運用}
  • 57. ScyllaDB User Group Japan. Open Source Licenses • Free Software Foundation’s GNU AGPL v3.0 • Current version 2.3, September 19, 2018 Driver Licenses • Apache Cassandra drivers: Apache License v2.0 Enterprise Licenses • ScyllaDB Proprietary • Current version Scylla Enterprise 2018.1.4(Open Source v2.1) License 57
  • 58. ScyllaDB User Group Japan. 如何なるCassandraアプリケーションでも、IPが合って入れば接続できる! Apache Cassandra 2.2のすべて、Apache Cassandra 3.xの一部の機能が備わっている 特に、以下のインターフェースはApache Cassandraと互換性がある。 • すべてのApache Cassandraドライバ • プロトコル:CQL(Cassandra Query Lanague)、Thrift、JMX • ツール:cqlsh、nodetool、cassandra-stress、及びすべてのCassandra 2.2ツール • SSTableフォーマット Cassandraとの互換性 58 詳細は、こちらを参照要 https://docs.scylladb.com/using-scylla/cassandra-compatibility/
  • 59. ScyllaDB User Group Japan. 59
  • 60. ScyllaDB User Group Japan. 60 Survey of 1,850 attendees AWS re:Invent 2017
  • 61. ScyllaDB User Group Japan. Scylla Beneifts 61 i3.2xlarge,8vCPU,27(EUC),61GiB Memory,1x1900 NVMe SSD, 0.862USD/時間, 東京
  • 62. ScyllaDB User Group Japan. Scylla Beneifts 62 i3.2xlarge,8vCPU,27(EUC),61GiB Memory,1x1900 NVMe SSD, 0.862USD/時間, 東京
  • 63. ScyllaDB User Group Japan. Scylla Beneifts 63 i3.16xlarge,64vCPU,200(EUC),488GB Memory,8x1900 NVMe SSD,5.856USD/時間,東京
  • 64. ScyllaDB User Group Japan. Scylla Beneifts 64 Latency(MS) Time High Low
  • 65. ScyllaDB User Group Japan. Scylla Beneifts 65 CassandraをJavaからC++でリプレース C ++はしばしば1970年代のC言語に根ざした伝統的な命令型言語であると考えられているが、過 去数年間、完全に近代化されており、ラムダ、メタプログラミング、関数型プログラミングなど の現代的パラダイムに移行している
  • 66. ScyllaDB User Group Japan. Scylla Beneifts 66 Cassandraに接続するために何を使用していても、現在の実装を利用し、IPアドレスを Scyllaクラスタに変更するだけで動作する
  • 67. ScyllaDB User Group Japan. Apache Cassandra vs Scylla 67
  • 68. ScyllaDB User Group Japan. Scylla vs Other Big Data Product 68
  • 69. ScyllaDB User Group Japan. • スループット重視 • シーケンスアクセス又は 粗なランダムIO • 背景にはGoogle • Hive, Presto, Pig • ジョイン、集計処理可能 Hadoopのデータ処理 69
  • 70. ScyllaDB User Group Japan. • スループット重視 • 入力はシーケンスアクセス又は 粗なランダムアクセス • 出力は粗なランダムIO • DWHエンジン • ジョイン、集計処理可能(得意) OLAP系のRDBのデータ処理(DWH) 70
  • 71. ScyllaDB User Group Japan. NoSQLのデータ処理 71 • タンアラウンドタイムがRDBより速い • 超ランダムなIOに強い • GoogleやFacebook • Cassandra, DyanmoDB, HBase, MongoDB(ABC順) • ジョイン、集計処理はできないか(苦手) • ジョイン、集計処理は、Sparkなどを連携して可能 NoSQL NoSQL NoSQL
  • 72. ScyllaDB User Group Japan. OLTP系のRDBのデータ処理 72 • タンアラウンドタイム重視 • ランダムなIOに強い • Oralce, Microsoft, IBM • Oracle, SQL Server, MySQL, PostgreSQL • ジョイン、集計処理可能 NoSQL NoSQL RDB
  • 73. ScyllaDB User Group Japan. IoTに求められるデータ処理の特徴 73 NoSQL NoSQL • 短いタンアラウンドタイム+高スループット • 粗なランダムなIOに強い • Scyllaが代替案になる ソースからダイレク トではなく、メッセ ージングツールから 入ってくる サードパーティーの Query Engine、アプ リケーションフレー ムワークでデータマ ートを切り出す
  • 74. ScyllaDB User Group Japan. 74 ScyllDBの高速性に迫る • アーキテクチャー • ネットワーク • DISK IO • Cassandraの改善
  • 75. ScyllaDB User Group Japan. アーキテクチャー 75 shared-nothing • コア毎のシャード • 独自のタスクスケジューラ • 非同期 thread pools • 割り込み • ロック
  • 76. ScyllaDB User Group Japan. コア毎のシャード • マルチコアハードウェアのパワーを極限まで引き出す • 各シャードは独自のメモリ、ネットワーク、I/O、自分のデータを持つ • ロックレスのコア間通信 独自のタスクスケジューラ • タスクは、自分に与えられたデータだけを集中して処理 すべて非同期 • ロックレス、データはすべてCPUにストリーム • コア間で明示的にデータの受け渡し 76
  • 77. ScyllaDB User Group Japan. 77 食事はお行儀よく
  • 78. ScyllaDB User Group Japan. 高スループットのサーバアプリケーションの開発のためのオープソースフレームワーク(C++) SeaStarの推奨ハードウェア構成 • CPU あるだけ、マルチコアとNUMAフレンドリ • NICs 10GB~40GB • DISK IOPS数の多い高速SSD • クライアントマシン サーバと異なるマシンで複数実行することをお勧め Seastarライセンス • Apache License、Version 2.0 • Data Plane Development Kit(DPDK)バージョン1.8.0以降を使用 Seastar 78 http://seastar.io
  • 79. ScyllaDB User Group Japan. DPDK(Data Plane Development Kit)とは、ネットワークの高速化, ネットワーク処理に特化したアプリケーショ ンを作成するためのソフトウェアライブラリ(C++) アプリケーションはDPDKが提供するライブラリを使用することで、NICの送受信データとアプリケーション間でダイレクト にアクセス可能 • 2010年にIntelによって開発 • 2013年にDPDK.orgに設立 • BSD License DPDK(Data Plane Development Kit) 79 https://www.dpdk.org/
  • 80. ScyllaDB User Group Japan. 統一キャッシュ―(Unified Cache) 80 Cassandraのキャッシングは複雑である。キーキャッ シング、行キャッシング、Linuxキャッシング、ヒープ、 オフヒープなど膨大な量のチューニングが求められる。 RAMの半分はmemtablesや その他のバックエンド要件 に使用される。 Scyllaは残りの半分をキャ ッシュに使用する。 チューニングは不要である。
  • 81. ScyllaDB User Group Japan. • P2P型のクラスタ―では、ノードの追加、ノードの復旧、バランシングで大量のトラフィックが発生する • カーネルバイパスのためにオーバヘッドが発生しない。アプリケーションで思い描いたデータ通信を行う • 下記は、コミュニティー版v2.3まで Scyllaストリーミング 81
  • 82. ScyllaDB User Group Japan. v2.4(現在2.3)では、sstableにダイレクトに書き込みを行う Scyllaストリーミング 82 https://www.scylladb.com/2018/08/14/upcoming-improvements-scylla-streaming/ 3.8xlarge,32vCPU,99ECU,244GiB Memory,4x1900 NVMe SSD 1.89TiB,66分,765MiB / 1sec
  • 83. ScyllaDB User Group Japan. DISK IOの並列度をScylllaが最適化し、DISK IOでに糞詰まりを起こさず、常に一定のスループットを引き出す。 ディスクの最大同時実行性(max-io-requests)をScyllaがテストして設定する • /etc/scylla.d/io.conf SEASTAR_IO="--max-io-requests=33" Scylla I/Oスケジューラ 83 https://www.scylladb.com/2018/04/19/scylla-i-o-scheduler-3/
  • 84. ScyllaDB User Group Japan. ユーザ空間でIOをキューイングし,ディスクの最大同時実行性の範囲で下位層とIOを行う 下位層の糞詰まりを避けることで、安定・最適なIOを維持する 内部キューをもっている最新のSSDさえ、要求をOS/ディスクに任せるだけでは、失速(ストール)などの弊害を引き起こす ユーザ空間ディスクI/Oスケジューラの設計:Scyllaの例 84 左側では、ユーザ空間のプロセスによって生 成されたリクエストは、カーネルをスルーし、 下にレイヤーに到達します。過負荷の制御は できません。右側では、ディスクI / Oスケジ ューラが要求とカーネルの間に配置されるよ うになりました。これらの要求を意味のある クラス(AとB)に分類し、バランスを保ち、 下位レイヤが過負荷にならないようにすしま す。 https://www.scylladb.com/2018/04/19/scylla-i-o-scheduler-3/ https://www.scylladb.com/2017/10/05/io-access-methods-scylla/ 従来型 ScyllaDB
  • 85. ScyllaDB User Group Japan. 自律DB(Autonomous) 85 インストール時には、I / O、RAM、CPU、およびネットワーク用にチューニングされる。ネ ットワーク、ディスク、CPUに入る5種類のリクエスト(commitlog、memtable、compaction、 query、repair)
  • 86. ScyllaDB User Group Japan. • ユーザー処理に負担を掛けないようにCompaction Controllerが自動制御しバックグラウンド実行 • Scyllaは、STCS(Level Tiered Compaction Strategy)、LCS(Leveled Compaction Strategy)、TWCS(Time Window Compaction Strategy)およびDTCS(Date Tiered Compaction Strategy)をサポート Scylla Compatction 86 https://www.scylladb.com/2018/06/12/scylla-leverages-control-theory/ a real-world closed-loop control system
  • 87. ScyllaDB User Group Japan. • パーティションキーによる実装 ヒットするとめちゃくちゃ検索効率がいいが、ヒットしないとフールスキャンになる • マティリアズドビュー(Materialized View) 通常のビューとは違って、クエリの結果をテーブルにキャッシュ―している。ベーステーブルが変更されると、 自動的に変更される。検索には優れているが、ストレージを逼迫する • Cassandraのセカンダリインデックスは、ローカルインデックス方式 書き込みは良い、読み込みは潜在的にすべてのノードを読む必要性があり、 大規模クラスタ―では、拡張性、有効性に悩む • ScyllaのSIは、MVに基づくグローバルインデックス方式 各索引に対してマテリアライズド・ビューが作成される。 Scyllaオープンソースリリース2.3ーセカンダリインデックス(SI) 87 https://www.scylladb.com/2017/11/03/secondary/
  • 88. ScyllaDB User Group Japan. 続き 88 マテリアライズド・ビューでキーには、パーティション・キーおよびクラスタリング・キーが存 在し、検索は、マテリアライズド・ビューを参照し、ダイレクトに行にアクセスする。 フェーズ(1)では、クエリはノード7 に到着し、ノード7はクエリのコーデ ィネータとして機能する。ノードは、 索引付けされた列を問合せしているた め、フェーズ(2)で、 「user@example.com」の索引表の行 を持つノード2の索引読取り表を発行 します。クエリは、フェーズ(3)で 使用されてインデックス付きテーブル の内容を取得するユーザーIDのセット を返します。
  • 89. ScyllaDB User Group Japan. ScyllaDB v2.0からパーティションのサブセットのみをキャッシュ • パーティション全部を持ってこない • 読み込みの無駄な増幅を回避 Row-granularity Population 89 https://www.scylladb.com/2018/07/26/how-scylla-data-cache-works/
  • 90. ScyllaDB User Group Japan. データはパーティション単位でキャッシュし、パージもパーティション単位 • 伝統的なCassandra実装 • これは遅延を誘発 従来では 90
  • 91. ScyllaDB User Group Japan. 91 これでScyllaDBの高速性に関する主な箇所は 説明させて頂きました! ScyllaDBは、日々進化しています。 次をお楽しみにしてください。