ááąá¸ ááŹá
ááťá˝ááşááąáŹáˇáşááŹáááş Misha Butrimov ááŤá Cassandra áĄááźáąáŹááşá¸ áááşá¸áááşá¸ááźáąáŹááźááťááşááŤáááşá ááťá˝ááşáŻááşáááŹááşáááşá¸áááş NoSQL ááąááŹááąáˇá áşááťáŹá¸ááᯠáá áşááŤáážáááźáŻáśáá°á¸áá°ááťáŹá¸áĄáá˝ááş áĄááŻáśá¸áááşááááˇáşáááş - áááşá¸áá˝ááş áááşááááŹá¸ááááˇáş áĄááąáŹááşáĄáááşááąáŹáşáážáŻáĄááşášááŤáááşááťáŹá¸áážááˇáş ááťááŻáˇáá˝ááşá¸ááťááşááťáŹá¸ááťáŹá¸á á˝áŹáážááááşá Oracle áááŻáˇáááŻááş áĄááźáŹá¸áááşá ááşááąááŹááąáˇá áşáážáá˝á˛á áĄááźáŹá¸áááşáááˇáşáĄááŹáááŻááťáž áááźááşáááąá¸ááŤáá á¤áĄááŹááťáŹá¸áááş áááˇáşáĄáááşááᯠáááşáááşáááşááźá áşáááşá
Cassandra á ááŹááąáŹááşá¸áá˛á áááşá¸áááş ááąáŹááşá¸áá˝ááşá á˝áŹáááŻááşá¸ááŹáááŻááşááąáŹ ááťááŻáˇáá˝ááşá¸ááťááşáá áşááťááşááážááᲠááŽáááŻááşá¸ááŻááşááŹá¸ááąáŹ NoSQL ááąááŹááąáˇá áşáá áşááŻááźá áşáááşá áĄááťááŻáˇááąáŹááąááŹááąáˇá áşáĄáá˝ááş terabytes áážá áşááŻááᯠááąáŤááşá¸áááˇáşáááş áááŻáĄááşááŤáá áááşáááş áá˝ááşá¸áá˛áááŻáˇ node ááťáŹá¸ááᯠáááŻá¸áááŻá¸áážááşá¸áážááşá¸áááˇáşááŤá áááşá¸ááᯠáĄááźáŹá¸ááąááŹá ááşááŹáááŻáˇ ááťá˛áˇáá˝ááşáááŹá¸á áĄá áŻáĄááąá¸áááŻáˇ ááąáŤááşá¸áááˇáşááŤá ááŻááşááąáŹááşááźáŽá¸ááŹá¸ RPS ááᯠáááŻá¸ááźážááˇáşáááŹá¸á áĄá áŻáĄááąá¸áááŻáˇ ááąáŤááşá¸áááˇáşááŤá áááşá¸áááş áááˇáşááťááşáááş áŚá¸áááşááťááşáá˝ááşáááşá¸ áĄááŻááşááŻááşáááşá
áá°á ááŹáááŹáážááá˛á ááąáŹááşá¸áááŻáážáŻ áĄááťáŹá¸áĄááźáŹá¸ááᯠáááŻááşáá˝ááşááźááşá¸ áážááˇáş áááşáááşáááş á ááŤááąáááˇáş áááşááąáŹááşááťáŹá¸áá˛? 10, 20, 30, 40 ááąáŹááşá¸áááŻáážáŻáá áşá áášáááˇáşáááŻáĄááťáŹá¸ááźáŽá¸áááŻááşááŤáá°á¸á áážááşáááşá¸áááşáááşáĄáá˝ááş áá áşá áášáááˇáşááťážááş ááąáŹááşá¸áááŻááťááş ááá,áááá áá áşá áášáááˇáşááťážááş ááąáŹááşá¸áááŻááťááşááąáŤááşá¸ á áááşá¸ááᯠááááşá¸áááşá¸ááŹá¸áááşáᯠááźáąáŹááąáŹááŻáášáááŽááťáŹá¸ áážáááŤáááşá áá°áááŻáˇ ááŻáśááážáŹááąáŤáˇá
ááááŹááĄá Cassandra áááş áááşá
ááşáĄááťááşáĄáááşááťáŹá¸áážááˇáş áá˝áŹááźáŹá¸ááťááşáá
áşááŻáážááááş - áááşá¸áááş áááşá¸áááŻáˇáážááˇáş ááŻáśá¸ááá°áááşáááŻááşááąá ááźáŽá¸ááąáŹáˇ ááŤá áážááşáááááŻáˇ áĄáááşá¸áĄááąá¸ááźáŽá¸ááŤáááşá
ááŻáśááášááŹááşáá°ááąáŹ áĄááŹáááŻááşá¸áááş áá°ááŽáááşáááŻááşá
ááŻááşááąáŹáşáááŻááşáááşáá áşáŚá¸áááş ááťá˝ááşáŻááşááśáááŻáˇ ááąáŹááşáážáááŹááźáŽá¸ âá¤áááşáážáŹ CQL Cassandra query language ááźá áşááźáŽá¸á áááşá¸áá˝ááş áá˝áąá¸ááťááşááŹá¸ááąáŹ ááŻááşááźááşááťááşáá áşáᯠááŤáážááááşá áááşá¸áá˝ááş ááąááŹá áááşá¸áá˝ááş áážááááşá á áŹáá˝áąááąá¸áááŻáˇ áĄáááşáááźáąáá°á¸á áĄáááşááźáąáŹááşáˇ?"á Cassandra ááᯠáááşá ááşááąááŹááąáˇá áşáá áşááŻááᯠáááşááśááźááşá¸áááş áááşá ááşá á˝áŹáááşááąáááş áĄááąáŹááşá¸ááŻáśá¸áááşá¸áááşá¸ááźá áşáááşá ááźáŽá¸ááąáŹáˇ ááťá˝ááşááąáŹáşá áĄá˛ááŤááᯠáááźáąáŹáşááźáŹáá°á¸á ááŻáážáŹá¸áážáŹ ááŹá¸ááźá áşááŹá¸áááşá áááşá¸ ááŽáááŻááşá¸ áá áşááŻáᯠáážáŹá¸ááąááááˇáşáááşá
áĽáááŹáĄáŹá¸ááźááˇáşá ááąáŹááşáááşáá áşáŚá¸áááş ááťá˝ááşáŻááşáááŻáˇááś ááŹááŹááźáŽá¸ âááŽááŽá áŽá¸ááŽá¸áĄáá˝ááş ááąááŹááąáˇá áşáá áşáᯠáááŻáˇáááŻááş áááşá¸ááťááşáááşá¸áááşá¸áá˝ážááşáá áşááŻáĄáá˝ááş ááąááŹááąáˇá áşáá áşáᯠáááşááąáŹááşááźááŤá ááŻáˇá áĄá˛ááŽáážáŹ áĄá áŹá¸áĄááąáŹááş áááşá¸áá˝á˛áá˝áą ááŤáážáááŻááş ááŽááŽá áŽá¸ááŽá¸áá˛áˇ áááŻááşááąáŹááşáá˝áą á áŹáááşá¸áá˝áą áážááááşáâ "áá˝áŹá¸ááĄáąáŹááş!" áážá áşáááŻááşá ááááááşááášáááŹáĄááťááŻáˇááᯠááąá¸áááŻáˇáááŻááşááŻáśááźááˇáş ááźáŽá¸áá˝áŹá¸ááŤááźáŽá áĄááŹáĄáŹá¸ááŻáśá¸áááş áĄáá˝ááşááťááşááźááşááźáŽá¸ ááŻáśááźááşá áááşááťáááąáŹ áĄááŻááşááźá áşááŤááááˇáşáááşá áĄáááşáážááşááá˝áąá áááˇáşááťááşáááşááźáżááŹááᯠááźáąáážááşá¸ááąá¸áááşáááŻáˇ ááąáŹááşáááşáá˝áąá ááŹááźáąáŹááŹáá˛áˇáĄáá áĄáŹá¸ááŻáśá¸áĄáááşááźáąááŤáááş- áá°áááŻáˇáážáŹ ááŻááşááŻááşá áŹáááşá¸áážáááźáŽá¸ áá°áááŻáˇááťááşááźáŻááşááťááşáá˛áˇ áááşá¸ááťáŹáá˝áąááᯠááááťááşááźáááşá áááşá¸ááąááźáŽá
áĄáááşááźáąáŹááˇáşáááŻááąáŹáş Cassandra áááş ááąáŤááşá¸á ááşááąááŹááąáˇá áşááźá áşááąáŹááźáąáŹááˇáşá áááşá¸áááş ááąáŹáˇáááşáááŻá¸ááᯠáá áşááźááŻááşáááşáááşá¸ ááąáŹááşááśáˇááąá¸ááźáŽá¸ ááťááşááźááˇáşááąáŹááąáŹáşááśááťáŹá¸áá˝ááş ááąááŹááťáŹá¸ááᯠááááşá¸áááşá¸ááŹá¸áááşá Java áááŻáˇáááŻááş Kotlin áá˝ááşáááşá¸áááŻá¤áá˛áˇáááŻáˇááąáŹáşááźáááŻááşáááşá
Map<RowKey, SortedMap<ColumnKey, ColumnValue>>
áááŻáááŻáááşáážáŹá áĄááťááŻá¸áĄá áŹá¸áá˝á˛ááŹá¸ááąáŹááźáąááŻáśááŤáážáááąáŹááźáąááŻáśáá áşááŻááźá áşáááşá á¤ááźáąááŻáśáĄáá˝ááş áááááŻáśá¸ááąáŹáˇáážáŹ áĄáááşá¸ááŽá¸ áááŻáˇáááŻááş áĄáááŻááşá¸áááŻááşááąáŹáˇááźá áşáááş - áĄáááŻááşá¸áá˝á˛ááąá¸ááąáŹáˇááźá áşáááşá áá˝á˛ááźáŽá¸ááŹá¸ááźáąááŻáśáĄáá˝ááş ááąáŹáˇááźá áşáááˇáş ááŻáááááąáŹáˇáááş Clustering key ááźá áşáááşá
ááąááŹááąáˇá áşá ááźááˇáşááźá°á¸áážáŻááᯠáááŻááşááąáŹáşáááşá node ááŻáśá¸ááŻááᯠáá˝á˛ááźááˇáşááźááŤá ááŻáˇá áááŻáááşáááş data ááťáŹá¸ááᯠnode ááťáŹá¸áĄááźá áşáááşáááŻáˇáá˝á˛ááŻááşááááşáááŻááŹá¸áááşáááşáááŻáĄááşáááşá ááŹááźáąáŹááˇáşáᲠáááŻááąáŹáˇ ááťá˝ááşááąáŹáşáááŻáˇá áĄááŹáĄáŹá¸ááŻáśá¸ááᯠáá áşááŻáᲠááąáŤááşá¸áááˇáşáááŻááşáááş (áá áşááąáŹááşá áážá áşááąáŹááşá ááŤá¸ááąáŹááşááąáŹááş áážááááŻááşáááş)á ááŤá ááźááˇáşááťáŽááąá¸áá˛áˇ áááşáááşááźáŽá¸ááąáŹáˇ áááŻááşááŤáá°á¸á áááŻáˇááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş ááááşá¸áá áşááŻááᯠááźááşááąá¸áááˇáş áááşášááťáŹááŻááşááąáŹááşááťááşáá áşáᯠáááŻáĄááşááŤáááşá ááááşá¸ááááşá¸áá áşááŻááťážááŹá áĄáááŻááşá¸áĄááŹáá áşááŻáĄáá áážááşááťáŹá¸ááąáŹ int áá áşááŻá ááźáŽá¸ááąáŹáˇ ááťá˝ááşááąáŹáşáááŻáˇáážáŹ range áá áşááŻáĄáá˝ááş ááŹáááşáážááá˛áˇ node áá áşááŻá ááŻááááĄáá˝ááşá ááŻááááá áşááŻá nth áĄáá˝ááşáᲠááźá áşááŤáááşá
Partition key áááŻáˇ ááąáŤáşáá˛áˇ hash function áááŻááŻáśá¸ááźáŽá¸ ááŽááśááŤááşááᯠáá°ááŤáááşá áááşá¸áááş Primary key áá˝ážááşááźáŹá¸ááťááşáá˝ááş áááşáážááşááŹá¸áááˇáş ááąáŹáşááśááźá
áşááźáŽá¸á áááşá¸áááş ááźáąááŻáśá áááááŻáśá¸áážááˇáş áĄááźáąááśáĄááťááŻáśá¸ááąáŹáˇááźá
áşáááˇáş ááąáŹáşááśááźá
áşáááşá áááşá¸áááş áááşáááˇáş node ááž áááşáááˇáşááąááŹááᯠáááşááśáááşááᯠááŻáśá¸ááźááşáááşá SQL áá˝ááşáá˛áˇáááŻáˇáá°ááŽááąáŹ syntax ááŽá¸ááŤá¸ááźááˇáş Cassandra áá˝ááşáááŹá¸áá
áşááŻáááŻáááşááŽá¸áááş-
CREATE TABLE users (
user_id uu id,
name text,
year int,
salary float,
PRIMARY KEY(user_id)
)
á¤ááá ášá áá˝ááş Primary key áááş ááąáŹáşááśáá áşááŻááŤáááşááźáŽá¸ áááşá¸áááş partitioning key áááşá¸ááźá áşáááşá
ááťá˝ááşáŻááşáááŻáˇááĄááŻáśá¸ááźáŻáá°ááťáŹá¸áááş áááşáááŻáˇááŻááşááąáŹááşáááşáááşá¸á áĄááťááŻáˇá node áá áşááŻáááŻáˇá áĄááťááŻáˇááž áĄááźáŹá¸áá áşááŻáááŻáˇáá˝áŹá¸áááşááźá áşááźáŽá¸ áĄááťááŻáˇáážáŹ áááááá áşááŻáááŻáˇáá˝áŹá¸áááşááźá áşáááşá ááááşáážáŹ Python áá˝ááş áĄááááŹááşáĄááźá áş áá°ááááťáŹá¸ááąáŹ ááźáąááŻáśáá áşááŻááŻáááşá¸ áá°ááááťáŹá¸ááąáŹ ááŹáááş hash table áá áşáᯠáááŻáˇáááŻááş áááşáááŻá¸ááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠáááşáááŻááşá ááąáŹáˇááźááˇáş ááąá¸áááŻááşá áááŻá¸áážááşá¸ááąáŹ Key áááşáááŻá¸ áááşááąáŹááşáážáŻááźá áşáááşá
áá˝áąá¸ááŤ- á á áşááŻááşááźááşá¸ááᯠáá˝ááˇáşááźáŻáááˇáşáĄá፠áĄááźááˇáşáĄáá áááşááşáĄááźá áşáááŻáˇ ááźáąáŹááşá¸áá˛áááşá áááŻáˇáááŻááş áááŻááşáááˇáşááąáŹáĄááŹááᯠáá˝áąá¸ááťááşááŤá
áá˝áąá¸ááťááşááŹá¸ááąáŹ ááŻááşááźááşááťááşáĄááťááŻáˇááᯠááąá¸ááŹá¸ááźááŤá
ááŻáˇá select * from users where, userid =
. áááşá¸áááş Oracle áá˝ááşáá˛áˇáááŻáˇááźá
áşáááş- ááťá˝ááşáŻááşáááŻáˇáááş áá˝áąá¸ááťááşáááşá áĄááźáąáĄááąááťáŹá¸ááᯠáááşáážááşááąá¸ááźáŽá¸ áĄááŹáĄáŹá¸ááŻáśá¸ áĄáááşááźáąá
áąáᏠáĄááŻáśá¸ááźáŻáá°ááťáŹá¸áááş áááşá¸ááᯠááážááááşá áááŻáˇááąáŹáş áĽáááŹáĄáŹá¸ááźááˇáşá áá˝áąá¸áá˝áŹá¸áááˇáşáážá
áşáážáááąáŹ ááŻáśá¸á
á˝á˛áá°ááᯠáááşáá˝áąá¸ááťááşááŤáá Cassandra áááş ááąáŹááşá¸áááŻááťááşááᯠáááźááˇáşáááşá¸ááąá¸áááŻááşááźáąáŹááşá¸ áááŻááşááźáŹá¸ááŹá¸áááşá áá˝áąá¸áážá
áşáážááˇáşáááşáááşáááˇáş ááąááŹááźááˇáşááąááŻáśáážááˇáşáááşáááşá áá°á ááŻáśá¸ááááááąáŹááźáąáŹááˇáşááźá
áşáááş - áá°áˇáá˝ááş ááąáŹáˇáá˝ážááşááŹá¸áááˇáş ááąáŹáşááśáá
áşááŻááŹáážááááşá áááŻáˇááąáŹááşáá°áá âááąáŹááşá¸ááźáŽá á፠ááŽááąáŹááşá¸áááŻááťááşááᯠááźááˇáşáááşá¸ááąá¸áááŻááşááąá¸áááşá áá˝ááˇáşááźáŻáááş á
á
áşááŻááşááźááşá¸ááᯠáááˇáşááŤá" áá˝ážááşááźáŹá¸ááťááşááᯠááąáŤááşá¸áááˇáşáááŻááşááŹáá˛áˇ áĄáŹá¸ááŻáśá¸ áĄáááşááźáąááŤáááşá ááźáŽá¸ááąáŹáˇ ááŽáĄááťáááşáážáŹ ááźáąáŹááşá
ááŹááąáŹááşá¸áá˛áˇ áá
áşááŻáᯠááźá
áşáá˝áŹá¸áááşá
ááťá˝ááşáŻááşáááŻáˇáááş á ááşá¸áááşááąááŹááᯠáĄááŻáśá¸ááźáŻááąáŹáĄááŤá áĄáŹá¸ááŻáśá¸áĄáááşááźáąááŤáááşá áĽáááŹáĄáŹá¸ááźááˇáşá ááťá˝ááşáŻááşáááŻáˇáá˝ááş áážááşáááşá¸ááąáŤááşá¸ 4 áááşá¸áážááááˇáş ááŻááşááŻááşáážáŻáá˝ááş á áŻáśá ááşá¸ááąá¸ááźááşá¸áážáŻááᯠáááşááŻááşááąáŹááşááąáŹáĄááŤá áĄááŹáĄáŹá¸ááŻáśá¸áááş ááťá˝ááşáŻááşáááŻáˇáĄáá˝ááş áĄáá˝ááşááąáŹááşá¸áá˝ááşáááşáááŻááşááąá áĄáááşááźáąáŹááˇáşáááŻááąáŹáş áá˝ááˇáşááźáŻá á áşááŻááşááźááşá¸áááş Cassandra áááş á¤áááŹá¸ááž node ááťáŹá¸áĄáŹá¸ááŻáśá¸á ááąááŹá ááşááŹááťáŹá¸áĄáŹá¸ááŻáśá¸ (á¤áĄá áŻáĄááąá¸áá˝ááş ááťáŹá¸á á˝áŹáážáááąááŤá) áážááąááŹáĄáŹá¸ááŻáśá¸ááᯠá áŻááąáŹááşá¸áááş Cassandra áĄáŹá¸ áá˝ááˇáşááźáŻááąá¸ááąáŹ áá˝ážááşááźáŹá¸ááťááşááźá áşááąáŹááźáąáŹááˇáş áááşá¸ááᯠá á áşááŻááşááźááşá¸ááźá áşáááşá áááşá¸áááş Full Scan á analogue ááźá áşááźáŽá¸ áááşáá°ááťáž áááşá¸ááᯠáážá áşáááşááźááşá¸ááážáááŤá
ID ááźááˇáş áĄááŻáśá¸ááźáŻáá°ááťáŹá¸áᏠáááŻáĄááşááŤáá ááťá˝ááşáŻááşáááŻáˇáááş á¤áĄááŹáĄáá˝ááş áĄáááşááźáąáááşááźá áşááŤáááşá áááŻáˇááąáŹáş áá áşááŤáá áşááśáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş áĄááźáŹá¸ááąá¸áá˝ááşá¸ááťáŹá¸ááᯠááąá¸ááŹá¸ááźáŽá¸ áá˝áąá¸ááťááşáážáŻáĄááąáŤáş áĄááźáŹá¸áááˇáşáááşááťááşááťáŹá¸ááᯠááťáážááşáááş áááŻáĄááşáááşá áááŻáˇááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇ áĄáážááşáááŤáááş- á¤áááşáážáŹ áĄáááŻááşá¸áááŻááşáá˝á˛ááźááşá¸ááąáŹáˇááŤáážáááąáŹ ááźáąááŻáśáá áşááŻááźá áşááąáŹáşáááşá¸ áĄáá˝ááşá¸áá˝ááş á áŽááŹá¸ááąáŹááźáąááŻáśáá áşááŻááźá áşáááşá
ááźáŽá¸ááąáŹáˇ áá°áˇáážáŹ Clustering Key áááŻáˇááąáŤáşáá˛áˇ ááąáŹáˇáá áşááŻáááşá¸ áážááááşá Cassandra ááĄáá°áĄááŽááźááˇáş áááşá¸áááąááŹááᯠááŻááşáááŻááşá¸áĄáá áŽáá˝á˛ááŹá¸áᏠnode áá áşááŻá áŽáá˝ááşáááşáážááááˇáş á¤ááŽá¸áááş ááťá˝ááşáŻááşáááŻáˇáá˝áąá¸ááťááşáááˇáşááąáŹáşááśááťáŹá¸ááŤáááşááŤáááşá áááŻáááŻáááşáážáŹá áĄááťááŻáˇááąáŹ Partition ááąáŹáˇáĄáá˝ááşá Clustering key áááş áááˇáşáĄáŹá¸ á¤áá áşáááşáá˛áááŻáˇ ááąááŹááᯠáááşáááŻáˇáá˝ááşá¸áááŻáˇááááşá áááşá¸áááş áááşáááˇáşááąááŹááᯠáá°ááááşááᯠáĄáááĄááťááźáąáŹááźááááˇáşáááşá
á¤áĄááŹáááş áĄáážááşááááşáááşá áážááŻááşá¸áážááşáá°ááᯠáááŻá¸áážááşá¸á á˝áŹááąáŤáşáááşá áĄááŹááášááŻáá áşááŻáááŻáśá áśááźááˇáş ááąáŹáşááśáĄááťááŻáˇááᯠááťá˝ááşáŻááşáááŻáˇááźááşáááşá¸áᏠáááşá¸ááᯠááąáŹáşááśááťáŹá¸á áŹáááşá¸áĄááźá áş áááşáážááşáááşá
CREATE TABLE users_by_year_salary_id (
user_id uuid,
name text,
year int,
salary float,
PRIMARY KEY((year), salary, user_id)
Primary key áá˝ážááşááźáŹá¸ááťááşááᯠáááŻááźáŻááŤá áááşá¸áááááĄááźááşá¸áĄááŻáś (ááťá˝ááşáŻááşáááŻáˇáááá ášá áá˝ááşá áážá áş) áááş áĄááźá˛áááşá¸ Partition key ááźá áşáááşá áááşá¸áá˝ááş ááąáŹáşááśáá áşáᯠáááŻáˇáááŻááş áá áşááŻáááşáááŻááąáŹ ááąáŹáşááśááťáŹá¸ ááŤáááşáááŻááşáááşá áĄááąá¸áááźáŽá¸ááŤá ááąáŹáşááśáĄááťáŹá¸áĄááźáŹá¸áážáááąááŤáá áááşá¸ááᯠááŹááŹá ááŹá¸ááźááŻáááşááááŻáááşááŹá áááşá¸áááş Primary key ááźá áşááźáąáŹááşá¸ ááŹá¸áááşáááŻááşá áąáááşáážááˇáş áááşá¸ááąáŹááşáá˝ááş áĄááźáŹá¸ááąáŹáşááśááťáŹá¸áĄáŹá¸ááŻáśá¸áááş Clustering key ááźá áşáááş á á¤ááá ášá áá˝ááşá áááşá¸áááŻáˇááᯠááąáŤáşááŹáááˇáşáĄá áŽáĄá áĽáşáĄáááŻááşá¸ áážááŻááşá¸áážááşáážáŻáá˝ááş ááŻááşáá˝ážááˇáşáááşááźá áşáááşá áááŻáááŻáááşáážáŹ áááááąáŹáşááśáááş áááŻááááŹáááşá ááŻáááááąáŹáşááśáááş ááááŹáážáŻáááşá¸áááş á áááşáááŻáˇááźá áşáááşá áĽáááŹáĄáŹá¸ááźááˇáşá ááťá˝ááşáŻááşáááŻáˇááąá¸ááŹá¸ááŻáśáááş ááąááŹáĄáááşá¸ááťáŹá¸áĄáá˝ááş áĄáá˝ááşááťáŹá¸ááᯠááŽááťážáááş- ááťá˝ááşáŻááşáááŻáˇáááş áá˝ááşáááşááťáŹá¸ááᯠá áŹáááşá¸ááźáŻá áŻááźáŽá¸ áááşá¸áááŻáˇáĄáá˝ááş áááşáááˇáşáĄááŹááťáŹá¸ áááŻááźáŽá¸ááźáŽá¸ áĄááąá¸áááşáááşááᯠááąá¸ááŤáááşá Cassandra áá˝ááşá á¤áĄááŹááťáŹá¸áááş áĄáááĄááťááźáąáŹáááťážááş áááşá¸áĄáá˝ááş ááąá¸ááŹá¸ááąáŹ ááŽááťážááźááşá¸ááťáŹá¸ááᯠáĄááŻáśá¸ááťáááˇáş data class á áááşáááşááťáŹá¸ááźá áşáááşá
áá˝á˛ááźáŹá¸áááşáážááşááźáŽá¸ áááˇáşáááşááťááşááťáŹá¸ ááťáážááşááŹá¸áááşá
ááąáŹáˇáááŻáááşááŽá¸áááŻááşáááˇáşáĄáááŻááşáá˝ááş áĄááťááŻá¸áĄá áŹá¸áĄá áŽáĄá áĽáş (áĄáááşá¸á áĄáááşá áĄáááşáĄááť) ááᯠáážááşááŹá¸ááŹá¸áááşáááŻáĄááşááźáŽá¸ áááşá¸ááᯠááąáŹááşáááŻááşá¸áá˝ááş ááźáąáŹááşá¸áá˛áááááŤá áááşá¸áááş ááąááŹááᯠáááşáá˛áˇáááŻáˇ á áŽáá˝á˛áááş áážááˇáş áááşá¸ááᯠáááşáááŻáˇ ááááşá¸áááşá¸áááşááᯠááŻááşáááŻááşá¸áĄáŹá¸ááźááˇáş ááŻáśá¸ááźááşáááşá áĄáááşá áááşáááş Clustering key áááŻáˇáááŻááş áĄááťááŻá¸áĄá áŹá¸áá˝á˛áááş áááŻáĄááşááŤáá áááşáááş áááŹá¸áĄáá áşáá áşááŻááᯠáááşááŽá¸ááźáŽá¸ áááşá¸áá˛áááŻáˇ ááąááŹáá˝ážá˛ááźáąáŹááşá¸áááş áááŻáĄááşáááşááźá áşáááşá áááşá¸áááş áážáááźáŽá¸ááŹá¸áá áşááŻáážááˇáş áĄááŻááşáááźá áşááŤá
ááťá˝ááşáŻááşáááŻáˇá áááŹá¸ááᯠááŻáśá¸á
á˝á˛áá°ááťáŹá¸áážááˇáş ááźááˇáşá
áąááźáŽá¸á áá˝áąá¸á
áážá
áşáĄáááŻááş áá˝ááşá¸áá˛áááŻáˇ ááťáá˝áŹá¸ááźáŽá¸á áááŻáˇááąáŹááş áá
áŹáážááˇáş áĄááŻáśá¸ááźáŻáá° ID ááźááˇáş node áá
áşááŻá
áŽáá˝ááş áĄáá˝ááşá¸áááŻááşá¸ááᯠáá˝áąáˇáááŻááşáááŤáááşá ááᯠááťá˝ááşáŻááşáááŻáˇáááş áááˇáşáááşááťááşááťáŹá¸ ááťáážááşááźááşá¸ááźááˇáş áá˝áąá¸ááťááşáááŻááşááŤááźáŽá
ááŤáááŻáˇáĄááŻááşá ááźááşááąáŤáşááŹáááşá where, and
ááŻáśá¸á
á˝á˛áá°ááťáŹá¸ááážáááźáŽá¸ áĄáŹá¸ááŻáśá¸áĄáááşááźáąáá˝áŹá¸ááŤáááşá áááŻáˇááąáŹáş áĄáááşá ááťá˝ááşáŻááşáááŻáˇáááş Clustering key á áĄá
áááşáĄáááŻááşá¸áá
áşááŻááťážááŹááźá
áşááźáŽá¸ ááááŹáááşáážáŹá¸áááˇáşáĄáááŻááşá¸áááŻááŹáĄááŻáśá¸ááźáŻáááşááźááŻá¸á
áŹá¸ááŤáá áááŻáˇááąáŹááşáá˝ááş Cassandra áááş null comparator áĄáá˝ááş á¤áĄáá˝ááşááťáŹá¸ááŤáážáááąáŹ á¤áĄááŹááášááŻáááąááŹáĄáŹá¸ ááťá˝ááşáŻááşáááŻáˇáááźáąááŻáśáá˝ááş áážáŹááá˝áąáˇáááŻááşááźáąáŹááşá¸ ááťááşááťááşá¸áááŻááşááźáŹá¸ááŤáááşá áá° ááááşáá˛áˇ ááąáᏠáážáŹ áᲠáááşáážááş ááŹá¸ áááş á ᤠnode áážááąááŹáĄáŹá¸ááŻáśá¸ááᯠáááşááśááŻááşáá°ááźáŽá¸ áááşá¸ááᯠá
á
áşááŻááşáááŤáááşá áááşá¸áááş node áá
áşááŻáĄáá˝ááşá¸ Full Scan á analogue áá
áşááŻááźá
áşááźáŽá¸á áááşá¸áááşáááąáŹááşá¸ááŤá
ááážááşá¸áááşá¸ááąáŹáĄááźáąáĄááąáá˝ááş áááŹá¸áĄáá áşáá áşááŻáááşááŽá¸ááŤá
ááťá˝ááşáŻááşáááŻáˇáááş ááŻáśá¸á á˝á˛áá°ááťáŹá¸ááᯠID ááźááˇáş áááŻáˇáááŻááş áĄáááşáĄáááŻááş áááŻáˇáááŻááş áá áŹááźááˇáş áá áşáážááşááŹá¸áááŻááŤá ááťá˝ááşáŻááşáááŻáˇ ááŹááŻááşáááˇáşááááşá¸á ááŹáážáááźá áşá á áŹá¸áá˝á˛áážá áşááŻáśá¸ááŹááŻáśá¸ááŤá áĄáááşá áááşáááş áĄááŻáśá¸ááźáŻáá°ááťáŹá¸ááᯠááá°ááŽááąáŹ áááşá¸áááşá¸ááŻáśá¸ááťááŻá¸ááźááˇáş áááşáá˝ááşáááş áááŻáĄááşááŤáá áááŹá¸ ááŻáśá¸ááŻáážááááşááźá áşáááşá áááşáĄá°áážáŹ ááąááŹáá˝ááşáá˝áą ááťá˝áąááŹáá˛áˇááąáˇáá˝áą ááŻááşáá˝áŹá¸ááŤááźáŽá ááŤá ááąá¸áĄáááşááŹááŻáśá¸ áĄáááşá¸áĄááźá áşááŤá áááşá¸áááş áĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áááááŻááşá áąáááŻááşáááˇáş ááŻáśáˇááźááşááťáááşáááş ááťáŹá¸á á˝áŹáááşááŹáááşá áĄááŻáśá¸ááźáŻáá°áááş 10 áááá áşáááş áá áşá áášáááˇáşáĄáá˝ááşá¸ áá áşá áŻáśáá áşááŻááᯠáááşááśááážáááźááşá¸á áááŻááŹááŹááŤáááşá
ááťá˝ááşáŻááşáááŻáˇáááş ááááŻáĄááşááąáŹ ááąááŹáááşááťáŹá¸ááᯠááąáŹááşá¸áááşááąáŹááşááŹá¸ááźáŽá¸ ááąáŹááşá¸á á˝áŹ áĄáááŻááşá¸áĄááŹáážááˇáş á áááşááťááŻáśááźááşá á˝áŹ áááşáááşáááŻááşá áąáááşáĄáá˝ááş ááŻáśáážááşáááŻááşááąáŹ áĄááťááşáĄáááşááťáŹá¸ááᯠááąáŹááşá¸áááşááąáŹááşááŹá¸ááŤáááşá áĄáážááşááąáŹáˇá ááąááŹá ááşáᏠááŻáśá¸ááŻááŤáááşááąáŹ áĄá áŻáĄááąá¸áá áşááŻá áŽáá˝ááş ááąááŹááááşá¸ááááşá¸áážáŻáĄáááˇáş (ááŹáážááťáąáŹááşááťááşáá˝áŹá¸ááąáŹáĄááŤ) áááşááśáááŻááşááąáŹ node ááŤá¸ááŻááŤáážáááąáŹ ááąááŹá ááşááŹáá áşááŻáááş ááąááŹá ááşááŹáá áşááŻáááąááŻáśá¸áážáŻááᯠááŻáśá¸ááážááşáááşáááŻááşáááşááźá áşáááşá ááťááşáážá áşááŻá áá áşááŻá áŽáá˝ááş ááąáŹááşáááş node áážá áşááŻá ááźáŽá¸áážáᏠááźáżááŹááťáŹá¸ á áááşáááşá á¤áĄááŹáááş áĄáá˝ááşááąáŹááşá¸áá˝ááşááąáŹ áááşááąáŹááşá¸áážáŻáá áşááŻááźá áşááźáŽá¸á áááşá¸áááş áĄááᯠSSD ááááŻááşááťáŹá¸áážááˇáş ááááŻáááşááŹáĄááťááŻáˇááᯠáááşáááŻá¸áážáá áąááŤáááşá áááŻáˇááźáąáŹááˇáşá áááşááąáŹáˇááž SQL áááŻááşáááˇáş Cassandra áááŻáĄááŻáśá¸ááźáŻáááşáĄáá˝ááşá áááşááśááąá¸ááážáááąáŹááźááşáááąáŹáˇááťáŹá¸áááŻáĄááŻáśá¸ááźáŻáááşáĄáá˝ááşáááŻá¸áážááşá¸ááąáŹá ááşá¸ááťááşá¸ááťáŹá¸áááŻáááááşáááŻáĄááşáááşá
ááťá˝ááşáŻááşáááŻáˇáááş áááˇáşááąáŹááşá¸áááŻááťááşáĄáááŻááşá¸ áĄááŹáĄáŹá¸ááŻáśá¸ááᯠááŽáááŻááşá¸áá˝á˛ááŤáááşá áĄááááĄááťááşáážáŹ ááąááŹáááŻááşááąáŹáşáááşá¸ áĄááşááşááŽááąá¸áážááşá¸á áááşá¸áážááˇáş áááşáááŻáˇáĄááŻááşááŻááşáááşáááşá¸á ááá°ááŽááąáŹáááşá¸áááşá¸ááťáŹá¸ááźááˇáş ááá°ááŽááąáŹááąááŹááᯠáááşááśááážááááş áááŻáĄááşááŤá áááŻáˇáááŻááş ááá°ááŽááąáŹáááşá¸áááşá¸ááťáŹá¸ááźááˇáş áá°ááŽááąáŹááąááŹááᯠáááşááśááážááááş áááŻáĄááşááŤáá ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸ááᯠáĄáááŽááąá¸áážááşá¸áĄáá˝ááş áĄáááşááźáąáááˇáşááŻáśá áśááźááˇáş ááŹá¸áážáááááşááźá áşáááşá áááŻááşááŤáá ááťá˝ááşáŻááşáááŻáˇáááş Full Scan áá˝ááş ááťáážáŻáśá¸áááşááźá áşááźáŽá¸ Cassandra áááş ááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ áááşáááˇáşáĄáŹá¸ááŹááťááşááž ááąá¸áááşáááŻááşááŤá
ááąááŹááᯠáá˝á˛ááźáŹá¸ááźááşá¸áááş á áśáážáŻááşá¸ááźá áşáááşá ááťá˝ááşáŻááşáááŻáˇáááş ááŻáśáážááşááŻáśá áśááťáŹá¸ááᯠááąáˇáá˝áŹá¸áááşá ááťá˝ááşáŻááşáááŻáˇáá˝ááş áááşá ááşááąááŹááąáˇá áşááťáŹá¸ááážáááąáŹáˇááŤá áá áşááŻááŻááᯠáĄááźáááş 100 ááťáááş áĄááźáááş 100 áážá˛ááąááááˇáşáááşá áááşáááˇáşááźááşá¸áááş á áťáąá¸áááşááŹááąá¸áááşá
ááťá˝ááşáŻááşáááŻáˇáááş ááŻáśáážááşáĄáááŻááşá¸ ááźááˇáşááąáááŻááşáááş áĄáááŻááşá¸áá˝á˛ááźááşá¸áĄáá˝ááş ááąáŹáˇááťáŹá¸ááᯠáá˝áąá¸ááťááşááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááąáŹáˇááťáŹá¸á hash ááᯠááťááşá¸ááźáąáŹááşá¸ááąáŹ áĄáá˝áŹáĄááąá¸áá áşááŻáá˛áááŻáˇ áááťááąáŹááşá áąáááŻááŤá áááŻáááŻáááşáážáŹ áĄáááşááąáŹáşááźá፠áĽáááŹáá˝ááş áá˝áąá¸áá˝áŹá¸áááˇáşáážá áşáááş áááąáŹááşá¸ááąáŹ áĽáááŹáá áşááŻááźá áşáááşá áááŻáááááťáááşáážáŹá ááťá˝ááşáŻááşáááŻáˇááĄááŻáśá¸ááźáŻáá°ááťáŹá¸áááş ááŻáśáážááşáĄáŹá¸ááźááˇáş áá˝áąá¸ááášáááŹááşáĄáááŻááş ááźááˇáşááąááŤá ááąáŹááşá¸áááşá áĄáááşá ááťá˝ááşáŻááşáááŻáˇáááş 5 áááşá¸ááťáąáŹááşá¸ááŹá¸ááťáŹá¸áĄááźáąáŹááşá¸ááźáąáŹááŤá áááŻá¸áá˝áŹá¸áááş - áááŻááąááŹáá˝ááş áĄáááŻááşá¸áá˝á˛ááźááşá¸áááş áĄáá˝ááşááąáŹááşá¸áá˝ááşáááşáááŻááşááŤá
áĄááťááŻá¸áĄá áŹá¸áá˝á˛ááźááşá¸ááᯠClustering Key áááşááŽá¸áážáŻáĄáááˇáşáá˝ááş áá áşááźáááşáá˝áąá¸ááťááşáááşá áááşá¸ááᯠááźáąáŹááşá¸áá˛áááşáááŻáĄááşááŤáá ááťá˝ááşáŻááşáááŻáˇááááŹá¸ááᯠáĄááźáŹá¸ááąáŹáˇááźááˇáş áĄááşááááşááŻááşááááşááźá áşáááşá
áĄááąá¸ááźáŽá¸ááŻáśá¸áĄááťááş- ááťá˝ááşáŻááşáááŻáˇáááş áá°ááŽááąáŹááąááŹááᯠááá°ááŽááąáŹáááşá¸áááşá¸ 100 ááźááˇáş ááźááşáááşááá°áááŻááťážááş ááá°ááŽááąáŹáááŹá¸ 100 áážáááŤáááşá
source: www.habr.com