Apache Cassandra 最前線
日本Cassandraコミュニティー
とみたかずたか自己紹介
冨田 和孝（@railute）
株式会社ＩＮＴＨＥＦＯＲＥＳＴ 代表取締役社長
青山学院大学

社会情報学部 非常勤講師「データマイニング」「データマイニング演習」（2020年度前期）

日本 Cassandra コミュニティーメンバー
データベースエンジニア・システムアーキテクト

経歴：ぐるなび、外国為替、ISPなど、DB中心としたシステム構築・運用・保守を担当。
高負荷・大容量・大規模なデータ処理・データ解析基盤作りに強み。
また、学生時代は社会言語学を専攻し、「認知意味論」をベースとしたＮＬＰも研究中。

Apache Cassandra 最新情報
Apache Cassandra 4.0

Cassandra Roadmap
Roadmap
開発ブランチ

2.1

2.1

3.0
2.2

3.1

…

3.11.03.11.6…
4.0

4.0

2.1.0 release2014/9/18

2.2.0 release2015/7/21
3.0.0 release2015年11月10日

3.1.0 release2015年12月9日
3.1.1 release2015年12月18日

3.11.0 release2017/6/24

4.0 code freeze
2018年9月

4.0 alpha1 release2019年10月25日
2.1.21 release2019年2月12日

2.2.16 release
3.0.20release
3.11.6release2020年2月14日

4.0 alpha4 release2019年4月
Vote finishedApache Cassandra トピック

➢ お帰りなさいDatastax➢ Apache Cassandra Contributor Meetingが始まりました。
➢ Apache Cassandra Sidecar Projectが始まりました。

Apache Cassandra 4.0✓Java 11サポート✓仮想テーブル✓監査ログ✓クエリロギング✓ノード間通信の改善✓ストリーミングの改善✓一時的なレプリケーション

Apache Cassandra 4.0
Java 11サポート
Java8およびJava11を両方ともサポートします。

JavaのサポートマトリックスJava 8（実行）Java 11（実行）Java 8（ビルド）

サポート

サポート

Java 11（ビルド）

非サポート

サポート

Apache Cassandra 4.0
仮想テーブルCassandraシステム内部情報をCQLで取得できるようになります。
※JMXで取得できた情報がCQLでも取得できるようになります。

cqlsh:system_views> SELECT * FROM system_views.settings;
name| value-------------------------------------+-------------------allocate_tokens_for_keyspace| nullaudit_logging_options_enabled|
auto_snapshot| trueautomatic_sstable_upgrade| falsecluster_name| Test Cluster
enable_transient_replication| falsehinted_handoff_enabled| truehints_directory| /home/ec2-user/cassandra/data/hints
incremental_backups| falseinitial_token| null...
...
...
rpc_address| localhost
ssl_storage_port| 7001start_native_transport| truestorage_port| 7000stream_entire_sstables| true (224 rows)

Apache Cassandra 4.0
監査ログ
1. ログイン試行の成功と失敗を含むすべての認証
2. CQLへのすべてのデータベースコマンド。（失敗、成功両方のクエリーがが記録されます。）※Auditlogviewerツールを用いて表示することが可能です。

$ auditlogviewer /cassandra/audit/logs/hourly WARN 03:12:11,124 Using Pauser.sleepy() as not enough processors, have 2, needs 8+ Type: AuditLog LogMessage:
user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711427328|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE AuditLogKeyspace; Type: AuditLog LogMessage:
user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711427329|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE "auditlogkeyspace" Type: AuditLog LogMessage:
user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711446279|type :SELECT|category:QUERY|ks:auditlogkeyspace|scope:t|operation:SELECT * FROM t; Type: AuditLog LogMessage:
user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564713878834|type :DROP_TABLE|category:DDL|ks:auditlogkeyspace|scope:t|operation:DROP TABLE IF EXISTS AuditLogKeyspace.t; Type: AuditLog LogMessage:
user:anonymous|host:10.0.2.238:7000|source:/3.91.56.164|port:42382|timestamp:1564714618360|ty pe:REQUEST_FAILURE|category:ERROR|operation:CREATE KEYSPACE AuditLogKeyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor' :1};; Cannot add existing keyspace "auditlogkeyspace" Type: AuditLog LogMessage: user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564714690968|type :DROP_KEYSPACE|category:DDL|ks:auditlogkeyspace|operation:DROP
KEYSPACE AuditLogKeyspace; Type: AuditLog LogMessage: user:anonymous|host:10.0.2.238:7000|source:/3.91.56.164|port:42406|timestamp:1564714708329|ty pe:CREATE_KEYSPACE|category:DDL|ks:auditlogkeyspace|operation:CREATE KEYSPACE
AuditLogKeyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1}; Type: AuditLog LogMessage:
user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564714870678|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE auditlogkeyspace; [ec2-user@ip-10-0-2-238 hourly]$Apache Cassandra 4.0
クエリロギング
すべてのCQLのクエリーを保存することが可能になりました。
※fqltoolツールを用いて表示することが可能です。

$ fqltool dump ./WARN [main] 2019-08-02 03:07:53,635 Slf4jExceptionHandler.java:42 - Using Pauser.sleepy() as not enough processors, have 2, needs 8+
Type: single-query
Query start time: 1564708322030
Protocol version: 4
Generated timestamp:-9223372036854775808
Generated nowInSeconds:1564708322
Query: SELECT * FROM system.peers
Values:Apache Cassandra 4.0
ノード間通信の改善✓ノンブロッキングI / O（NIO）を実装✓メッセージングメトリックの保持✓Paxosは最適化されたメッセージングの作成✓メッセージサイズの制限✓その他

Apache Cassandra 4.0
ストリーミングの改善
Repair処理におけるストリーミング処理が根本的に改善されました。

✓ ゼロコピーストリーミング追加✓ キースペースのストリーミングの並列化✓ Multi DCでのストリーミングの為の指定ノードの策定

Apache Cassandra 4.0
一時的なレプリケーション

障害発生時向けの暫定レプリカノードの選定が行えるようになりました。
通常のレプリカ保持ノードとは別にレプリカ保持ノードがダウンしている場合に一時的にレプリカ保持ノードに昇格する仕組みが追加されました。

まとめ

運用向けの機能追加の充実が行われています。
Apache Cassandraは下位互換性は強いデータベー
スですが運用面を考慮すると早めのアップグレードをおすすめします。