α α α αΆαα
ααααααααααααα»αααΊ Misha Butrimov αααα»αα ααααααΆααα’αααααααα·α α’αααΈ Cassandra α ααΏααααααααα»αααΉαααΆααααααααααααααΆααα’αααααααα·αααααΆαααα½ααααααααΉαααΌαααααΆααα·αααααα NoSQL - ααΆααΆααα»αααΆαα’αα»αααα αα·ααααα αΆααΆα αααΎααααα’αααααααΌαααΉαα α αΎαβααααα·αβααΎβα’αααβαα·αβααΆαβααΎαβα’αααΈβαααα βααΈ Oracle α¬βααΌαααααΆαβαα·ααααααβααααΆααβααααβααΆβαα½αβαα ααααβααΆααβαααβααΉαβαα½αβααααααααβααΈαα·αβα’αααα
ααΎ Cassandra ααα’αααΆαααΆ? ααΆααΊααΆααΌαααααΆααα·αααααα NoSQL αααααααΌαααΆααα ααΆα‘αΎααααααααΆαα ααα»α ααααΆααααΆααααααα½ααααααααΎααΆαααααααΆαααΆαααα’α ααααα·αααΎα’αααααααΌαααΆαααααααααΈαααΈ terabytes αααααΆααααΌαααααΆααα·αααααααα½αα ααα½α α’αααααααΆααααααααααααααΆαααα α α·ααα ααα αααααΈαααΆαα ααααααααααα·αααααααααααααα? ααααααααααΆαααα α αααααα αααααΎα RPS ααααΎαααΆα? ααααααααααΆαααα α αααααα ααΆααααααΎαααΆααααα»ααα·ααα αααα»ααααα
ααΎααΆαααΌααα’αααΈααα? ααΆαα·ααΆαα’αααΈααΆααααααααΆαααααΎααΆα αααΎαα ααα»ααααααΎα ααα½αααα»ααααΆα? ααααΎ 10, 20, 30, 40 ααΆαααααα»ααα½ααα·ααΆααΈααΊαα·αα αααΎαααα 100 ααΆααααααΎαααα»ααα½ααα·ααΆααΈαααααΆααααΆααα - αααααα ααΆααααα»αα αα»ααααααΆααα·ααΆαααΆαα½ααααααααΆααΆαααααΎαα»α 2 ααΆααααα»ααα½ααα·ααΆααΈα αα½ααααααα ααααΆααααΌαααΏα
α αΎαααΆαααααΆααα Cassandra ααΆαααΆααα»αααααΆαααααα½αααΈαα·ααααααααααΆαααααα - ααΆαα·αααααααααΉααα½αααααΆαααααααα α αΎααααααΊααααΆααααΆαααααα»αααΆαα
αα
αΆαα
αα·ααααα’αααΈαααΆααα’αααααααΎααα ααΌα ααααΆ ααααΎαααΆαααΌα ααααΆαααααα
αα αααααααα αααα·αααααΆααααΆααααααααα»αα αΎαααΆααα½αααΆ: βαααααΊααΆααΆααΆαααα½α CQL Cassandra α αΎαααΆααΆαααα ααααΈαααααααΆαααααααΎαααΎα ααΆααΆαααααααααΆ ααΆααΆα αα·αα αααα»ααααααα’ααααα αΎαααΆαα·αααααΎαααΆαααα α ααα»α’αααΈ?" ααΆαααααΆααΆα Cassandra ααΌα ααΆααΌαααααΆααα·ααααααααααΆααααααααΊααΆαα·ααΈααααα’α₯αααα ααααΎααααΈααααΎα’αααααΆααααα α·ααααΆα α αΎααααα»ααα·αααααααααααΆαααΆαα ααΆααααΌαααΆαα αΆαααΆαααα αααα»ααααααααα»αααααΈα α’αααααααΆαααααα ααΆα’αααΈαα½ααα»αα
ααΆα§ααΆα ααα α’αα·αα·ααααααΆααααααααΎαα αΎααα·ααΆαααΆα βααααααααΎαααΌαααααΆααα·αααααααααααΆααααΏαααΆαααΌααααααα α¬ααΌαααααΆααα·αααααααααααΆαααααααΈαα»αααα αΌαα ααΎαβααΉαβααΆαβααα αΌαβα’αΆα αΆαβαα βααΈβααα α¬βαααααΈβααΏαβααΆαβααΌααααααα αα·αβααΆααΆβααααααβαααα»αβαααΒ»α ααΎααα·ααΆααααααΈαααΆαα βααα!β ααααΆααααααααΎααΈααα αααααΆααΈαααΈ α αΎαα’ααααα½α ααΆαα α’αααΈαααΉαααααΎαααΆαααΏα αα·αα’αΆα αα»αα α·αααααΆαα α αΎαα’αααΈααααααααΆαααΊααα’αα αΌααααα’αα·αα·αααααα·ααΆαααΆααααααΈαααααααααααα»ααααααααΆααααα αΆαααα»αααα: αα½αααααΆααααααΈααα·αααα αΎααα½αααα ααααΉαααΆααΎαα½αααα ααα αα’α·αααα αΌαα’αααΈα α’αααβααΊβααααΆααα
ααααααααΆααα Cassandra ααΊααΆααΌαααααΆααα·ααααααααΌαααΆααα ααΆαααα»ααααααααΆαααααΆαααααααΌαααααααααααΉα αα·ααααααΆαα»ααα·αααααααααα»ααα½αααααααΌααΆαα αα αααα»α Java α¬ Kotlin ααΆα’αΆα ααααΌαααΆααα·αααααΆααΌα αααα
Map<RowKey, SortedMap<ColumnKey, ColumnValue>>
αααααΊαααααΈαααααΆααααααΈαααααααααααα ααααΆααα α»α ααΈαα½ααααααααΈαααααΊααααΆααα α»α αα½αααα α¬ααααΆααα α»α αααα αα - ααααΆααα α»α αααα ααα ααΌαααααΈααΈα αααααΆαααααΉααααααααΈαααααΆααααααααα½α α αΎα ααΊααΆααΌααααα αααααα
ααΎααααΈαααα αΆαααΈααΆαα ααα αΆαααααΌαααααΆααα·αααααα α αΌαααΎαααΌαααααΆααααΈα α₯α‘αΌαα’αααααααΌααααααΈααααααααααα·αααααααα ααΆααααΆααα αααααΆαααααααα·αααΎααΎαααααα½αααααα½αα’αααΈααααααααΆααα ααΆαα½α (ααααα·ααΈαααα’αΆα ααΆααα½αααΆααααΈαααΆααααααΆα - ααΆα αααΎαααΆααααα’αααα αΌαα α·ααα) ααααα·ααααααΆααΆαα ααα αΆαααα ααΌα ααααβα αΎα ααΎαβααααΌαβααΆαβα’αα»ααααβααα·ααα·ααααΆβαααβααΉαβαααα‘ααβαααβαα½αα ααααΆααααααααα½α int ααααααααΉαααααΆααα αΌααα αααα»ααα½ααα½αα ααα½αα α αΎαβααΎαβααΉαβααΆαβααααΆααβαα½αβαααβααα½αβαα»αβααααΌαβαααααΆααβαα½αβαα½α, ααΈααΈαβαααααΆααβααΈααΈα, nth αα½αβαααααΆαα nth α
αααβαααβααααΌαβααΆαβααβαααβααααΎβαα»αααΆα hash αααβααααΌαβααΆαβα’αα»ααααβαα
βααΉαβα’αααΈβαααβααΎαβα α
βααΆ Partition keyα αααβααΆβαα½αβααβαααβααααΌαβααΆαβαααααΆααβαααα»αβααΆαβααααΆαβαααααΉαβα
αααα α αΎαβαααβααΆβαα½αβααβαααβααΉαβααΆβαααααΉαβααααΌαβαααα»αβαα·αβααΌαααααΆαβαααα»αβααβαααααΈα ααΆαααααααΆααααΆααααΆααΉαααα½αααΆααα·ααααααααΆαα½αα ααΆααΆααα½αααααΌαααΆααααααΎααα
αααα»α Cassandra ααΆαα½αααΉαααΆαααααααααααααααΎαααααΌα
ααααΆαα
αααα»α SQLα
CREATE TABLE users (
user_id uu id,
name text,
year int,
salary float,
PRIMARY KEY(user_id)
)
ααΌαααα αααααααα»αααααΈαααααΆααα½ααααα½α α αΎαααΆααααΆαααααα αααααααα
ααΎβα’αααβααααΎβααααβααΎαβααΉαβααααΎβαααΆαβααΆ? ααααβααΉαβαα βααααΆααβαα½α ααααβαα βαα½αβααα αα·αβααααβαα βαα½αβααΆαβααΈα ααααααααΊααΆααΆααΆα hash ααααααΆ αααααααααΆααααΆααΆαααααΈ αααααααααΆααααΆααΆαα ααΆαα»αααααααα»α Python α¬αα ααΆααααααααααααα Key ααΆαααα αααααΎαα’αΆα α’αΆααααααααΆααα’αα α’αΆα αα·αααααααααααααΆααα α»α α
ααααΎαααΎαα αα αααα’αα»ααααΆαααΆααααα αααααα ααΆααΆαααααααααααα α¬α’αααΈααααα·ααα½αααααΎ
ααααααααααα
ααααΈαααααααΆαααααααΎαααΎααα½αα
ααα½αα select * from users where, userid =
. ααΆααααα
ααααΌα
ααΆαα
αααα»α Oracleα ααΎααααααααααΎαααΎα αααααΆαααααααααα α αΎαα’αααΈαααααΎαααΆα α’αααααααΎααααΆααααα½αααΆαααΆα ααα»ααααααααα·αααΎα’αααααααΎαααΎαα§ααΆα ααα α’αααααααΎααααΆαααααααΆαααααΆαααααΎαααΆααααΆαα Cassandra ααα’αΌαααα’ααααΆααΆαα·αα’αΆα
αααααααΆαααααΎααΆαααα αααααΆαααααΆααα·αααΉαα’αααΈααΆααα’ααα’αααΈαααααααααΎαα
ααα
αΆααα·ααααααα’αααΈααααΆαααααΎα - ααΆαααΆααα½ααααααα½αααααααα
ααα’α»ααααα αΆαααΆαααααΉαα αααααΆααααααΆααα·ααΆαααΆ βαα·αα’αΈαα αααα»ααα
ααα’αΆα
αααααααααΎαααα ααααααααΆαα’αα»ααααΆααααααα" ααΎαααααααααΆαααααΆα α’αααΈαααααΎαααΆαα α αΎααα
ααααααααΆαα’αααΈαααα½αα±αααααααααΆα
ααΎαα‘αΎαα
αα ααααααααΎαααααΎαααΆαααΎαα·ααααααααΆααααα α’αααΈααααααααΆαααΊααα’α α αΎααα ααααααα’αααα’αα»αααααααα½ααα αααα»αααα·ααααα αααααΆαααααααααααΎαααΆαα§ααΆα ααα 4 ααΆααααααααααΆ αααα’αααΈαααΊαα·αααα’αααααΆααααΎαααα αααααΆαααα’αα»ααααΆαα±αααααααααΊααΆααΆαααααΆααααα’αα»ααααΆαα±αα Cassandra αααααΌααα·ααααααααΆααα’ααααΈααΆααΆααααααΈαααααααααΆααααΆααα’αα ααααααααααα·ααααααααΆααα’αα (ααααα·αααΎααΆααα½αααΆα αααΎααα αααα»αα αααααααα) α αΎαααΆααααααααΆααααααααααΆα αααααΊααΆ analogue αα Full Scan α αΎαααααΎαααααααΆαααααΆααααΆααααΈαααΆαααΉαααΆααα
ααααα·αααΎβααΎαβααααΌαααΆαβααβα’αααβααααΎβααΆα ID αααβααΎαβααΉαβαα·αβα’αΈβααβααΆαα½αβααΆβα ααα»αααααααααααααΎαααααΌαααααααααα½ααααααααα αα·αααΆααααααα·αααααααααααΎααΆαααααΎαααΎαα ααΌα αααα α αΌαβααΎαβα αα αΆαα αααβααΊβααΆβαααααΈβααΆααα’ααβαααβααΆαβααααΆααα α»α βααααα ααα»ααααβαα βααΆαβαααα»αβααΆβααΆβαααααΈβααααααα
α αΎαααΆαααααΆαααΌααααα½αααααα αααααΎαα α ααΆ Clustering Keyα ααΌαααααα αα½αβααΆαβαα½αβααβαααβααΎαβααααΎαααΎα αααβααΆαβαααα½αβααα Cassandra αααβααΈβααααβαααβαα·ααααααβααααβααΆβααααΌαβααΆαβααααααβααΆαβααααααβααΌααα·ααααΆ α αΎαβααΉαβααΆαβααΈααΆααβαα βααΎβααααΆααβααΈαα½ααα αααααΊαααααΆαα Partition key αα½αα ααα½α Clustering key ααΉαααααΆααα’ααααααΆαα αααΆααααΆααααΈαααααα»ααα·ααααααα αΌααα αααα»αααΎαααΎααα ααΎααααααααΆαααααΆααΉααααα ααΈαααα
ααααα·αααΆαααααΆα α’αααααααααααααααΌαααΆαααα α ααΆαααΆαααΆαααααα ααΈααα αααααΎαααααααΆαααααα»αααΆααααΆαααααα½ααααααα»αααααααααΆααααα»αα½α α αΎαααΆααααααΌαααΆααααααΆααααΆαααααΈαα½ααααααααα
CREATE TABLE users_by_year_salary_id (
user_id uuid,
name text,
year int,
salary float,
PRIMARY KEY((year), salary, user_id)
ααα α·ααααα»αααΆααα ααααααΆαααααΆααααααΉαα αααα α’αΆαα»αααααααααΌαααααααΆ (αααα»αααααΈααααααΎα ααααΆα) ααΊαααααααΆααΌααααααααα ααΆα’αΆα ααΆααα½ααααα½α α¬α αααΎα ααΆαα·αααΆααααα αΆααα ααααα·αααΎααΆααα½αααααΆα αααΎα ααΆα αΆαααΆα αααααΌαααα αααααα»αααααααααααααα ααΎααααΈα±ααα’αααααααΎαααΆαααΆααΆααΆαα»ααααααΆαααααΊααΆααα αααα α αΎααα ααΈααααααα½αααααααααααααΆααα’ααααΊααΆααΌαααα αααααα αααα»αααααΈααααα½αααααΉαααααΌαααΆααααααΌααα αααα»αα§ααααααααααααααα αααα»αααααΆααααααα½αααααα α‘αΎαα αααααΊ αα½αααΈαα½αααΊααααΆααααΆα ααΈααΈααα·αααΌαααααΆαα α αΎαααΌα αααααα ααΎα α§ααΆα ααα αααααααααΎαααααα ααααΎααΉαααΆααααααΆααααααΆαααα·ααααααα ααΎαααΆααααααΈααΆα α αΎααααααΆαααα½αααΆ ααΎααααααααΆαα½αααΆααααΆα αα·ααα½αααΆααΌα ααΆαα αα αααα»α Cassandra ααΆαααααααΊααΆααΆαααααααΆαααα·αααααα αααααααΎααΉαααααααααααΆααααΆααΉαααααΌαααΆαα’αα»ααααα
ααΎααααααααΆααααααα αα·αααΆααααααα·α
α’αααααααΌαα αΆαααΆ ααααΆαααααααα (α α»αα‘αΎα α‘αΎαα α»α α’αααΈααααα) ααααΌαααΆαααααααα ααααααα½α αα ααααααααααααΌαααΆααααααΎα α αΎαααΆαα·αα’αΆα ααααΆααααααΌααα ααααααααααΆαααα ααΆαααααααΆααααααααΌααααααααΈααααααααα·ααααααααΉαααααΌαααΆααααααα αα·ααααααααααΆααΉαααααΌαααΆααααααΆαα»αα ααααα·αααΎα’αααααααΌαααΆαααααΆααααααΌα Clustering key α¬ sort order α’αααααΉαααααΌααααααΎαααΆααΆαααααΈ α αΎαααααααα·αααααααα αααα»αααΆα ααΆααΉααα·αααααΎαααΆαααΆαα½αα§ααααααααααΆαααααΆααααα
ααΎαααΆααααααααΆααΆαααααααΎαααΆαα½αααΉαα’αααααααΎααααΆαα α αΎαααΎαααΆαα½αααααΆαααααΆααα
αΌααα
αααα»ααααααααα½α ααΈαα½αααΆαααααΆαααααΎα α αΎααααααΆαααααα
ααΆααααα»ααα
ααΎααααΆααααΈαα½αααααααααΆαααα αα·αααααααααΆααα’αααααααΎααααΆααα α₯α‘αΌααααααΎαα’αΆα
ααααΎαααΎααααααΆαααΆααααααα·αα
ααααααααααΎααΆαααααααΎαααα
α‘αΎαααααααα where, and
α αΎαααΎαααα½αααΆαα’αααααααΎααααΆαα α αΎαα’αααΈαααΊααα’αααααααα ααα»ααααααααα·αααΎααΎαααααΆααΆαααααΎααααααααα Clustering key α αΎααα½ααααααααααα·αααΌαααααΆααααα Cassandra ααΉαααα’αΌαααα’ααααααΆααααΆααΆαα·αα’αΆα
αααααααααα
αααα»ααααααΈααααααΎαααΆααα αααααααα»αααααΆαααΆαααΆααααααααααΆαα null comparator αα·ααα½ααααα αααααΎαααααααΌαααΆαααααα - αααααααααααΆαααα»α αα αααα»αααΉαααααΌαααΆααα·ααααααααΆααα’ααα
ααααΈααααΆαααααααααααα α αΎαααααααΆα α αΎααααααΊααΆ analogue αα Full Scan αα
αααα»α node αααααΊαα·αααα’ααα
αααα»αααααΆαααΆααα·αα αααΆααααΆααααΆαα½α αααααΎαααΆααΆαααααΈαα½α
ααααα·αααΎααΎαα αααααααα’αααααααΎααααΆααααΆα ID α¬ααΆαα’αΆαα» α¬αααααααΆαααα ααΎααΎααα½αααααΎααΌα ααααα ? ααααΆαα’αααΈααα ααααΆααααααααΎααΆααΆαααΈαα ααααα·αααΎα’αααααααΌαααΆαα αΌααα αααα’αααααααΎααααΆααααΆαααΈαα·ααΈαααααααααΆ αααααΉαααΆαααΆααΆαα ααα½αααΈα αααααΆαααααααααΎααααααααα ααα ααΎααΈαα αααααΊααΆααααΆαααααααα»αα ααΆααΆαααααααα·α ααΆααααααααΆααααΎααα αααα’αΆα αααααααααααααΆαααααα’αααααααΎααααΆααα ααΆααΆααααααΈαααΆααααααΆααα’αααααααΎααααΆαααααα»αααΆαααα½αααΆαα’αααΈαα½ααααα»ααα½ααα·ααΆααΈααΆααααα»ααααααα 10 ααΆααΈα
ααΎαααααΎααΆαα·αααααααααα αααααα·αα αΆαααΆα α αα·ααα·ααααααααααα·αααααααααΈαααααΆαααααααααΆααααα»αααΆαααααΎααΆαααααααΆαααΆαααα’ αα·αααααΎαααΆαααααααααααΆαααΏααΆααα ααΆααα·ααα α ααααααααααΆαααααααααααα·ααααααα ααα½αααΈ αααααΈαα½ααααΆαααααΆααα ααα½α 5 ααΆαα½αααΉαααααα·ααααα’αΆα ααα½αααααΆαααααΆααααααΆαα»ααα·αααααα (αα ααααααααααΆαα’αααΈααααΌαααΆαααΆααααα) α’αΆα αααααΆαααΆαααΈαα·αααΈααααααααααα·αααααααα½αααΆαααααα»αα αα·αβααααΆααβααΈαβαααβαααα»αβααΈαα½ααβααβααΈαβαααβαα βααααααα α αΎαααΆααααααααΆααααΈααααααα αΆα αΆααααααΎαα αααβααΊβααΆβααΆαβααααΎβααααΆααβαααααβααβααα’ ααΆβααΆαβαααααβααΈαβααΈβααβααΆαβαααααα SSD drives αα·α processor α ααΌα ααααααΎααααΈααααΎ Cassandra ααααα·ααααααΆ SQL ααααα·αααΆαααααΆαααααα αααααααα α’αααααααΌαααΉαααΈα αααΆααααΆααααα
ααΎααα ααΆα’αααΈααααααααΆαααΆαααααΎααααα’αααα ααΏαα αααααΊαα·ααααααΆαα·αααααααα ααα»ααααααααααααααααα·ααΈααΉαααααΎαααΆαααΆαα½αααΆα ααααα·αααΎααΆααααΌαααΆαααα½ααα·αααααααααααααααΆαααα»ααα·ααΈαααααααααΆ α¬αα·ααααααααΌα ααααΆαααα»ααα·ααΈαααααααααΆ ααΎαααααΌαααΆααααΆααΆααααααααααΆααααα½ααααααΆαααααααα·ααΈα ααΎαα·αααΌα αααααα ααΎαααΉααααΆααααααα»αααΆααααααααα α αΎα Cassandra ααΉααα·ααααααα±ααααΎαααΌαα’αααααααααααααΆαα½αα‘αΎαα
ααΆαααααΎα±ααααΌα αα·ααααααααΊααΆααααααΆαα ααΎαααααα α’αααΈααααααααααααΆ ααΎααααααΆαααΌαααααΆααα·ααααααααααΆαααααααααα αΎαα ααααα·αααΎααΎαααΆααα’αααΈαα½αα α»α 100 αα ααΆααΉαααα 100 ααα ααΆαα αααααααΆαααΆααααα
ααΎαααααΎαααΎαααααΆααα α»α αααααΆαααααα ααααΎααααΈα±αααα½αααΆααααΌαααΆαα ααα αΆαααΆααααααΆα ααΎαβαα·αβα ααβα±ααβαααααΆβααβααβααααβααΎαβααααΆααβαα βαααα»αβαα½αβα ααα’ααβαα½αβααα αααβααΊβααααΆαβααααΎαβαααα»αβα§ααΆα αααβααΆαβααΎβααΆβααααΌβα’αΆαααααα α αααΆααααΆαααααα ααα ααΆααΆααΆαααα’ααααα·αααΎα’αααααααΎααααΆααααααααΎαααΆααααααΆααααΌαααΆαα ααα αΆαααΆαααααΆαααααΎα α αΎαα’αΆαααααααααα·αααΎααΎααααα»ααα·ααΆαα’αααΈαα·αααααααΆααααΈ 5 - ααΆααααα αααα ααΈαααααΉααα·αααΌαααα’ααα
ααΆαβααααααβααααΌαβααΆαβααααΎαααΎαβααααβαα βααααΆααααΆαβαααααΎαβααΌαααβα αααααα ααααα·αααΎα αΆαααΆα αααααΌαααααΆααααααΌα ααΎαααΉαααααΌαααααΎαα αα α»ααααααααΆαααΆααΆαααααααΎααααααααΎαααααααα
α αΎαα’αααΈαααααααΆαααααα»α: ααααα·αααΎααΎαααααΌαααΆαααΆααααα·ααααααααΌα
ααααΆαααα»α 100 αα·ααΈαααααααααΆ αααααΎαααΉαααΆαααΆααΆα 100 αααααααααΆα
ααααα: www.habr.com