ืืื ืืืจ.
ืฉืื ืืืฉื ืืืืจืืืื, ืื ื ืจืืฆื ืืกืคืจ ืื ืงืฆืช ืขื ืงืกื ืืจื. ืืกืืคืืจ ืฉืื ืืืื ืฉืืืืฉื ืืื ืฉืืขืืื ืื ื ืชืงื ืืืกืืกื ื ืชืื ืื ืฉื NoSQL - ืืฉ ืื ืืจืื ืชืืื ืืช ืืืืขื ืืืืืืืืช ืฉืืชื ืฆืจืื ืืืขืช ืขืืืื. ืืื ืื ืจืืืช ืฉืื ืืืจ ืืืื ืืืจืงื ืื ืื ืืกื ื ืชืื ืื ืืืกื ืืืจ, ืืืืจืื ืืืื ืืฆืืื ืืช ืืืื.
ืื ืื ืื ืืื ืืงืกื ืืจื? ืืื ืืกื ื ืชืื ืื NoSQL ืฉืชืืื ื ืืื ื ืงืืืช ืืฉื ืืืช ืฉืืชืจืื ืืืื. ืื ืืชื ืฆืจืื ืืืืกืืฃ ืืื ืืจื-ืืืื ืขืืืจ ืืกื ื ืชืื ืื ืืืฉืื, โโืืชื ืคืฉืื ืืืกืืฃ ืฆืืชืื ืืืืขืช. ืืืจืืื ืืืชื ืืืจืื ื ืชืื ืื ืืืจ? ืืืกืฃ ืฆืืชืื ืืืฉืืื. ืืืืืื ืืช ื-RPS ืืืขืืื? ืืืกืฃ ืฆืืชืื ืืืฉืืื. ืื ืขืืื ืื ืืืืืื ืืืคืื.
ืืื ืขืื ืืื ืืืื? ืืืืืจ ืืืืคืื ืืืจืื ืืงืฉืืช. ืืื ืืื ืื ืืจืื? 10, 20, 30, 40 ืืืฃ ืืงืฉืืช ืืฉื ืืื ืื ืื ืืจืื. 100 ืืืฃ ืืงืฉืืช ืืฉื ืืื ืืืงืืื - ืื ืื. ืืฉ ืืืจืืช ืฉืืืจื ืฉืื ืฉืืืจืืช 2 ืืืืืื ืืงืฉืืช ืืฉื ืืื. ืื ืื ืจืื ืืฆืืจืื ืืืืืื ืืื.
ืืืืืคื ืขืงืจืื ื, ืืงืกื ืืจื ืืฉ ืืืื ืืื ืืืื ืื ืชืื ืื ืจืืฆืืื ืืื โ ืืื ืื ืืืื ืืื ืืืื. ืืืช ืื ืืฉืื ืืืื ืืืืืจ.
ืื ืื ืื ืฉื ืจืื ืืืชื ืืืจ ืขืืื ืืืชื ืืืืจ
ืคืขื ืืืช ืืืืข ืืื ืขืืืช ืืฉืื: "ืื ื ืฉืคืช ืฉืืืืชืืช CQL Cassandra, ืืืฉ ืื ืืฆืืจืช select, ืืฉ ืื ืืืคื, ืืฉ ืื ื. ืื ื ืืืชื ืืืชืืื ืืื ืื ืขืืื. ืืื?". ืืชืืืืกืืช ืืงืกื ืืจื ืืื ืืกื ื ืชืื ืื ืืืกื ืืื ืืืจื ืืืืฉืืืช ืืืชืืื ืืืืืืืช. ืืื ื ืื ืืงืื ืืช ืื, ืื ืืกืืจ ืืจืืกืื. ืืชื ืคืฉืื ืชืขืฆื ืืฉืื ืื ื ืืื.
ืืืฉื, ืืืืข ืืืื ื ืืงืื ืืืืืจ: โืืืื ื ืื ื ืืืืจ ืืืืข ืืกืืจืืช ืืืืืืืื, ืื ืืืืจ ืืืืข ืขืืืจ ืกืคืจืืืช ืืชืืื ืื. ืืืื ืื ื ืฉื ืื ืืช ืืืื ืื ืจืฉืืื ืฉื ืกืืจืืช ืืืืืืืื ืืฉืืงื ืื ืืโ. ืื ืื ื ืืืืจืื ืืฉืืื: "ืืื ื ืื!" ืคืฉืื ืฉืื ืฉื ื ืืชืื, ืืื ืกืืื ืื ืืกืืืืช, ืืื ืืขืืื ืืืจ ืืืื ืืืืืื ืืช. ืืืื ืืกืืจ ืขื ืฉืืืงืืืืช ืืืื ืืืืืจืื ืฉืื ืขืงืจืืช ืืืช ืคืืชืจืืช ืืช ืืืขืื ืืืคืืื: ืืฉ ืืื ืจืฉืืืช ืืืฆืจืื, ืืื ืจืืฆืืช ืืืขืช ืืืื ืืืื ืื ืจืืฆืืช ืืืฉื. ืืชื ืืช.
ืืกืืื ืืื ืืื ืฉืงืกื ืืจื ืืื ืืกื ื ืชืื ืื ืืืืจืืื: ืืื ืืกืคืง ืื ืืื ืืช ืขืจื ืืคืชื ืืืืืกื ื ืชืื ืื ืืขืืืืืช ืจืืืืช. ื-Java ืื Kotlin, ืืคืฉืจ ืืชืืจ ืืช ืื ืื:
Map<RowKey, SortedMap<ColumnKey, ColumnValue>>
ืืืืืจ, ืืคื ืฉืืืืื ืื ืืคื ืืืืื ืช. ืืืคืชื ืืจืืฉืื ืืืคื ืื ืืื ืืงืฉ Row ืื ืืคืชื Partition - ืืคืชื ืืืืืฆืืช. ืืืคืชื ืืฉื ื, ืฉืืื ืืืคืชื ืืืคื ืฉืืืจ ืืืืื ืช, ืืื ืืคืชื Clustering.
ืืื ืืืืืืฉ ืืช ืืชืคืืืืช ืืกื ืื ืชืื ืื, ื ืฆืืืจ ืฉืืืฉื ืฆืืชืื. ืขืืฉืื ืืชื ืฆืจืื ืืืืื ืืื ืืคืจืง ืืช ืื ืชืื ืื ืืฆืืชืื. ืื ืื ื ืืืืก ืืื ืืืื (ืืื, ืืืืืื ืืืืืช ืืืฃ, ืืืคืืื, ืืืืฉื - ืืื ืฉืชืจืฆื), ืื ืื ืืืืช ืขื ืืื ืฉื ืืคืฆื. ืืื, ืื ืื ื ืฆืจืืืื ืคืื ืงืฆืื ืืชืืืืช ืฉืชืืืืจ ืืกืคืจ. ืจืง ืืกืคืจ, ืืื ื ืืจืื ืฉืืืื ืก ืืืืื ืืกืืื. ืืืืื ืื ื ืฆืืืช ืืื ืืืจืื ืขื ืืืื ืืื, ืืฉื ื ืืฉื ื, ื-nth ื-nth.
ืืกืคืจ ืื ื ืืงื ืืืืฆืขืืช ืคืื ืงืฆืืืช Hash, ืืฉืจ ืืืืืช ืขื ืื ืฉืื ื ืืื ืื ืืคืชื Partition. ืื ืืขืืืื ืฉืฆืืื ื ืืื ืืืืช ืืคืชื ืจืืฉื, ืืื ืืขืืืื ืฉืชืืื ืืืคืชื ืืจืืฉืื ืืืืกืืกื ืืืืชืจ ืฉื ืืืคื. ืืื ืงืืืข ืืืื ืฆืืืช ืืงืื ืืืื ื ืชืื ืื. ื ืืฆืจืช ืืืื ืืงืกื ืืจื ืขื ืืืชื ืชืืืืจ ืืืขื ืืื ื-SQL:
CREATE TABLE users (
user_id uu id,
name text,
year int,
salary float,
PRIMARY KEY(user_id)
)
ืืืคืชื ืืจืืฉื ืืืงืจื ืื ืืืจืื ืืขืืืื ืืืช, ืืืื ืื ืืคืชื ืืืืืฆืืช.
ืืืฆื ืืคืขืื ืืืฉืชืืฉืื ืฉืื ื? ืืืงื ืืืื ืืฆืืืช ืืื, ืืืงื ืืืืจ, ืืืืงื ืืฉืืืฉื. ืืชืืฆืื ืืื ืืืืช hash ืจืืืื, ืืืืื ื ืื ืืคื, ืืืืืขื ืื ืืืืืื ื-Python, ืื ืืื ื ืขืจืื ืืคืชื ืคืฉืื ืืื ื ื ืืื ืืงืจืื ืืช ืื ืืขืจืืื, ืืงืจืื ืืืืชืื ืืคื ืืคืชื.
ืืืจ: ืืืฉืจ ืืคืฉืจ ืกืื ืื ืืืคื ืืกืจืืงื ืืืื, ืื ืื ืื ืืขืฉืืช
ืืื ื ืืชืื ืืฉืคื ื ืืืจ: select * from users where, userid =
. ืืกืชืืจ ืืื ืืืืจืงื: ืื ืื ื ืืืชืืื select, ืืฆืืื ืื ืืช ืืชื ืืื ืืืื ืขืืื, ืืืฉืชืืฉืื ืืงืืืื ืืช ืื. ืืื ืื ืชืืืจ, ืืืฉื, ืืฉืชืืฉ ืขื ืฉื ืช ืืืื ืืกืืืืช, ืงืกื ืืจื ืืชืืื ื ืช ืฉืืื ืื ืืืืื ืืืื ืืช ืืืงืฉื. ืืืื ืฉืืื ืื ืืืืขืช ืืืื ืขื ืืื ืื ืื ื ืืคืืฆืื ื ืชืื ืื ืขื ืฉื ืช ืืืืื - ืืฉ ืื ืจืง ืขืืืื ืืืช ืฉืืฆืืื ืช ืืืคืชื. ืืื ืืื ืืืืจืช, "ืืกืืจ, ืื ื ืขืืืื ืืืืื ืืืื ืืช ืืืงืฉื ืืื. ืืืกืฃ ืืคืฉืจ ืกืื ืื." ืื ืื ื ืืืกืืคืื ืืช ืืื ืืื, ืืื ืขืืื. ืืืจืืข ืืื ืืฉืื ื ืืจื ืงืืจื.
ืืฉืื ืื ื ืคืืขืืื ืขื ื ืชืื ื ืืืืงื, ืืื ืืกืืจ. ืืืฉืืชื ืืืฆืข ืฉืืืืชื ืืืคืงื, ืฉืื ืืฉ ืื ื, ืืืฉื, 4 ืืืืืื ืจืฉืืืืช, ืื ืืื ืื ืืืฉ ืืื ืขืืืจื ื. ืื ืืืคืฉืจ ืกืื ืื ืืื ืื ืืื ืฉืืืคืฉืจืช ืืงืกื ืืจื ืืืกืืฃ ืืช ืื ืื ืชืื ืื ืืืืืื ืืื ืืื ืืฆืืชืื, ืืื ืืจืืื ืื ืชืื ืื (ืื ืืฉ ืจืืื ืืื ืืืฉืืื ืืื), ืืจืง ืื ืืกื ื ืืืชื. ืืื ืื ืืืื ืืกืจืืงื ืืืื, ืืืืขื ืืฃ ืืื ืื ืืจืืฆื ืืื ื.
ืื ืืืื ื ืฆืจืืืื ืจืง ืืฉืชืืฉืื ืืคื ืชืขืืืช ืืืืช, ืืืื ื ืืกืืจ ืขื ืื. ืืื ืืคืขืืื ืื ืื ื ืฆืจืืืื ืืืชืื ืฉืืืืชืืช ืืืจืืช ืืืืืื ืืืืืืช ืืืจืืช ืขื ืืืืืจื. ืืื, ืื ื ืืืืจืื: ืื ืื ืืคื ืฉืืฉ ืื ืืคืชื ืืืืฆืืช, ืืื ืืชืืื ืืคื ืืืืื ืช.
ืืืฉ ืื ืื ืืคืชื, ืฉืื ื ืงืืจืืื ืื ืืคืชื ืืืฉืืืืืช. ืืคืชื ืื, ืืฉืจ, ืืชืืจื, ืืืจืื ืืืขืืืืืช ืฉืื ื ืืืืจืื, ืืขืืจืชื ืงืกื ืืจื ืืืื ื ืืืฆื ืื ืชืื ืื ืฉืื ืืืืื ืื ืคืืืืช ืืืืืงืื ืืื ืฆืืืช. ืืืืืจ, ืขืืืจ ืืคืชื Partition ืืืฉืื, โโืืคืชื Clustering ืืืื ืื ืืืืืง ืืื ืืืืืฃ ืืช ืื ืชืื ืื ืืขืฅ ืืื, ืืืืื ืืงืื ืืื ืืชืคืืก ืฉื.
ืื ืืืืช ืขืฅ, ืคืฉืื ื ืงืจื ืฉื ืืฉืืื, ืฉืืืื ืื ืื ื ืืขืืืจืื ืงืืืฆื ืืกืืืืช ืฉื ืขืืืืืช ืืฆืืจื ืฉื ืืืืืืงื, ืืืื ืื ืืฆืืื ืืจืฉืืื ืฉื ืขืืืืืช.
CREATE TABLE users_by_year_salary_id (
user_id uuid,
name text,
year int,
salary float,
PRIMARY KEY((year), salary, user_id)
ืฉืืื ืื ืืื ืืืืช ืืืคืชื ืืจืืฉื; ืืืืขืื ืืจืืฉืื ืฉืื (ืืืงืจื ืฉืื ื, ืืฉื ื) ืืื ืชืืื ืืคืชื ืืืืฆื. ืื ืืืื ืืืืืช ืืืจืื ืืขืืืื ืืืช ืื ืืืชืจ, ืื ืื ืืฉื ื. ืื ืืฉ ืืื ืขืืืืืช, ืฆืจืื ืืืกืืจ ืืืชื ืฉืื ืืกืืืจืืื ืืื ืฉืืงืื-ืืขืื ืฉื ืืฉืคื ืืืื ืฉืืื ืืืคืชื Primary, ืืืืืืจืื ืื ืฉืืจ ืืขืืืืืช ื ืืฆืืื ืืคืชื Clustering. ืืืงืจื ืื, ืื ืืฉืืืจื ืืืฉืืืื ืืคื ืกืืจ ืืืคืขืชื. ืืืืืจ, ืืขืืืื ืืจืืฉืื ื ืืฉืืขืืชืืช ืืืชืจ, ืืฉื ืืื ืคืืืช ืืฉืืขืืชืืช ืืื ืืืื. ืืื ืื ืื ื ืืืชืืื, ืืืฉื, ืฉืืื ืฉืืืช ืขืืืจ ืืืืงืืช ื ืชืื ืื: ืื ื ืืคืจืืื ืืช ืืฉืืืช, ืืขืืืจื ืื ื ืืืชืืื ืืืื ืืืืืื ืืืชืจ ืืืืื ืงืื ืื ืืืชืจ. ืืงืกื ืืจื, ืืื ืื, ืืืกืืช, ืืฉืืืช ืฉื ืืืืงืช ืื ืชืื ืื, ืขืืืื ืืืืื ืืฉืืืื ืฉื ืืชืื ืขืืืจื.
ืื ืื ื ืงืืืขืื ืืืื ืืืืืืื ืืืืืืช
ืืชื ืฆืจืื ืืืืืจ ืฉืกืืจ ืืืืื (ืืืจื, ืขืืื, ืื ืฉืื ืืืื) ื ืงืืข ืืืืชื ืจืืข ืฉืื ืืืคืชื ื ืืฆืจ, ืืื ื ืืชื ืืฉื ืืช ืืืชื ืืืืืจ ืืืชืจ. ืืื ืงืืืข ืคืืืืช ืืืฆื ืืืืื ื ืื ืชืื ืื ืืืืฆื ืื ืืืืืกื ื. ืื ืขืืื ืืฉื ืืช ืืช ืืคืชื ืืืฉืืืืืช ืื ืกืืจ ืืืืื, ืชืฆืืจื ืืืฆืืจ ืืืื ืืืฉื ืืืืขืืืจ ืืืื ื ืชืื ืื. ืื ืื ืืขืืื ืขื ืืื ืงืืื.
ืืืืื ื ืืช ืืืืื ืฉืื ื ืืืฉืชืืฉืื ืืจืืื ื ืฉืื ื ืคืื ืืืืขืช, ืชืืืื ืืคื ืฉื ืช ืืืื, ืืืืจ ืื ืคื ืืื ืืื ืฆืืืช ืืคื ืืฉืืืจืช ืืืืื ืืฉืชืืฉ. ืืขืช ืื ื ืืืืืื ืืืืืจ ืขื ืืื ืืืืช ืืืืืืช.
ืืขืืื ืฉืื ื ืืืคืืข ืฉืื where, and
, ืืื ืื ื ืืงืืืื ืืฉืชืืฉืื, ืืืื ืฉืื ืืกืืจ. ืืื ืื ื ื ืกื ืืืฉืชืืฉ ืจืง ืืืืง ืืืืคืชื Clustering, ืืืืื ืคืืืช ืืฉืืขืืชื, ืื ืงืกื ืืจื ืืื ืชืชืืื ื ืฉืืื ืื ืืืืื ืืืฆืื ืืช ืืืงืื ืืืคื ืฉืื ื ืฉืื ืืืืืืืงื ืืื, ืฉืืฉ ืื ืืช ืืฉืืืช ืืืื ืขืืืจ ืืฉืืืืช ืืืคืก, ืืื ืื ืืื ืืืืืง ืืืืืจ, - ืืืคื ืืื ืฉืืื. ืืฆืืจื ืืืฉืื ืืช ืื ืื ืชืื ืื ืืืฆืืืช ืืื ืฉืื ืืืกื ื ืืืชื. ืืื ืื ืืืื ืืกืจืืงื ืืืื ืืชืื ืฆืืืช, ืื ืจืข.
ืืื ืืฆื ืื ืืจืืจ, ืฆืืจ ืืืื ืืืฉื
ืื ืื ืื ื ืจืืฆืื ืืืืืช ืืกืืืืื ืืืงื ืืฉืชืืฉืื ืืคื ืชืขืืืช ืืืืช, ืื ืืคื ืืื, ืื ืืคื ืืฉืืืจืช, ืื ืขืืื ื ืืขืฉืืช? ืฉืื ืืืจ. ืคืฉืื ืืฉืชืืฉ ืืฉืชื ืืืืืืช. ืื ืืชื ืฆืจืื ืืืืืข ืืืฉืชืืฉืื ืืฉืืืฉ ืืจืืื ืฉืื ืืช, ืืืื ืฉืืืฉ ืืืืืืช. ืืืคื ืืืืื ืฉืืื ืืกืื ื ืืงืื ืขื ืืืืจื. ืื ืืืฉืื ืืืื ืืืืชืจ. ืื ืขืืื ืืจืื ืคืืืช ืืืื ืชืืืื, ืื ืฉืขืืื ืืืืืง ืืืฉืชืืฉ. ืืืฉืชืืฉ ืืจืื ืืืชืจ ื ืขืื ืืงืื ืืฉืื ืืฉื ืืื ืืืฉืจ ื-10 ืืงืืช.
ืื ื ืืืืืคืื ืฉืื ืืืืชืจ ืื ืชืื ืื ืืคืืฉืืื ืขืืืจ ืืืืืืช ืืืฆืข ืงื ื ืืืื ืืื ืืืคืขืื ืืืืคื ืืืื. ืืืจื ืืื, ืืืขืฉื, ืืฉืืื ืืืืจืื ืืฉืืืฉื ืืจืืื ื ืชืื ืื, ืฉืืื ืืื ืืื ืืืืฉื ืฆืืชืื, ืืจืืช ืฉืืืืจ ื ืชืื ืื ืืงืืืืช (ืืฉืฉืื ืืืจ ืื ืืืื), ืืกืืื ืืฉืจืื ืืช ืืืชื ืฉื ืืื ืกื ืืจ ืืื ืืืืืืื. ืืขืื ืฉื ื ืฆืืชืื ืืื ืืื ืืืฉื ืืื ืื ืืชืจืื. ืืจืง ืืืจื ืื ืืชืืืืืช ืืืขืืืช. ืื ืืชืืจืืช ืื ืืืื, ืื ืฉืืื ืืื ืืื ื ื SSD ืืืขืืืื ื ืืกืคืื. ืืื, ืืื ืืืฉืชืืฉ ืืงืกื ืืจื, ืฉืืื ืืฃ ืคืขื ืื SQL, ืฉืื ืืื ืงืฉืจืื, ืืคืชืืืช ืืจืื, ืืชื ืฆืจืื ืืืขืช ืืืืื ืคืฉืืืื.
ืื ื ืืขืฆืืื ืืื ืืคื ืืงืฉืชื. ืืขืืงืจ ืืื ืื ืื ืชืื ืื, ืืื ืืื ืืืคืืืงืฆืื ืชืขืืื ืืืชื. ืื ืืื ืฆืจืื ืืงืื ื ืชืื ืื ืฉืื ืื ืืืจืืื ืฉืื ืืช ืื ืืืชื ื ืชืื ืื ืืืจืืื ืฉืื ืืช, ืขืืื ื ืืฉืื ืืืชื ืืฆืืจื ื ืืื ืืืคืืืงืฆืื. ืืืจืช, ื ืืืฉื ืืกืจืืงื ืืืื ืืงืกื ืืจื ืื ืชืืชื ืื ื ืฉืื ืืชืจืื.
ืื-ื ืืจืืืืืฆืื ืฉื ื ืชืื ืื ืืื ืื ืืจืื. ืื ืื ื ืฉืืืืื ืืฆืืจืืช ืจืืืืืช, ืืื ืื ื ืืืชืจ ืืกืื ื ืชืื ืื ืืืกืืื. ืื ื ื ืื ืืฉืื 100 ืคืขืืื, ืืื ืืฉืื 100 ืคืขืืื. ืื ืขืืืื ืืืชืจ ืืื ืืขืฆืืจื.
ืื ื ืืืืจืื ืืช ืืืคืชืืืช ืืืืืงื ืื ืฉืื ืืืืืงื ืืฆืืจื ื ืืจืืืืช. ืื ืื ื ืื ืจืืฆืื ืฉื-hash ืฉื ืืืคืชืืืช ืฉืื ื ืืืคืื ืืืืื ืฆืจ ืืื. ืืืืืจ, ืฉื ืช ืืืืื ืืืืืื ืืืขืื ืืื ืืืืื ืจืขื. ืืืชืจ ืืืืง, ืื ืืื ืื ืืืฉืชืืฉืื ืฉืื ื ืืืืืงืื ืจืืื ืืคื ืฉื ืช ืืืื, ืืจืข ืื ืื ืื ื ืืืืจืื ืขื ืชืืืืื ืืืชืืช ื' - ืืืืืงื ืฉื ืื ืชืืื ืืืื ืืืืืื.
ืืืืื ื ืืืจ ืคืขื ืืืช ืืฉืื ืืฆืืจืช ืืคืชื ืืฉืืืืืช. ืื ืืฉ ืฆืืจื ืืฉื ืืช ืืืชื, ื ืฆืืจื ืืขืืื ืืช ืืืืื ืฉืื ื ืขื ืืคืชื ืืืจ.
ืืืืืจ ืืื ืืฉืื: ืื ื ืฆืืจื ืืฉืืืฃ ืืช ืืืชื ื ืชืื ืื ื-100 ืืจืืื ืฉืื ืืช, ืื ืืืื ืื ื 100 ืืืืืืช ืฉืื ืืช.
ืืงืืจ: www.habr.com