áá ááĽáá˘
áľá Misha Butrimov áĽáŁááá, áľá áŤáłááľáŤ áľáá˝ ááááá áĽááááá. á¨áĽá áłáŞá ᨠNoSQL á¨ááἠááłáá˝á áááá áá¸á á áá áááá - áĽá á¨áľáá ፠áŁá áŞáŤáľ áĽá ááá áŤááĽááľ ááĽááśá˝ á ááľá˘ áĽá á¨áŚáŤáá ááá á¨ááááá áá á°ááá áłáłá¤á áá ááá ááá áŤáአáĽááá áááŽá˝ á áááľáá áŤáľááá˘
áľá áŤáłááľáŤ áá áĽáŠ ááá á á? áŤá á ááľ á¨ááľááľ ááĽáĽ á¨á°áá°á á¨NoSQL áłáłá¤á á˛áá á áĽáŠ áááł á¨áááá ááᢠáá ááłááľ á¨ááἠááł áááľ á´áŤáŁááśá˝á áá¨á á¨ááá á ááá áá° ááá áľ ááśá˝á áá¨ááŠá˘ áá° áá á¨ááἠááá¨á áááá? á áááá˝á áá° áááľá°á áŤááᢠá¨á°áááŁá ᨠRPS áá¨áá? á áááá˝á áá° áááľá°á áŤááᢠá á°ááŤáá á á áŁáŤá áá áŤá.
áááľ á áá áá á áá˝? áĽá áĽáŤááá˝á áľáááľá°áááľ ááᢠáá áľááľ áá? 10, 20, 30, 40 áşá áĽáŤááá˝ á á°á¨ááľ áĽá á áá°áá. ááá áłáľ á á°á¨ááľ 100 áşá áĽáŤááá˝ - áĽáá˛áᢠá á°á¨ááľ 2 áááŽá áĽáŤááá˝á áĽáá°ááŤáľááᥠá¨áááአáŠáŁááŤáá˝ á áᢠááááŁáľ ááá á ááŁá¸áá˘
áĽá á ááá
á°á¨á áŤáłááľáŤ á¨áááááľ áá¨á á ááľ áľáá
ááŠááľ á áá - á¨ááą áá á°ááłáłáááľ á¨áááᢠáĽá áá
áááľáłááľ á áŁá á áľááá áá.
á°ááłáłá á¨áááľáá ááá ááá á ááľ á áááľ á áá°áŤá
á ááľ áá á ááľ á¨áĽáŤ áŁáá°á¨áŁáŹ áá° áĽá ááĽáś áĽáá˛á á˛á á á¨áááĄ- âáá á¨CQL áŤáłááľáŤ áá áá ááá ááᣠáĽá á¨á°áá¨á ááá፠á ááᣠá¨áľáŁ áŤáá áĽá á ááᢠá°áĽáłá¤ áĽá˝ááá áĽá á áá°áŤá. ááá?". áŤáłááľáŤá áĽáá° áááááľ áłáłá¤á á áľáá áá¨áą áááá áŤáľá áááá°á áášá ááááľ ááᢠáĽá áĽá á ááľá°ááá á, á áŠá˛áŤ ááľáĽ á¨á°á¨áá¨á áá. á¨áá áľá á°áľ áĽáť áá á¨ááľááľááá˘
áááłáᣠá ááľ á°áá á áá° áĽá ááĽáś áĽáá˛á á ááĄ- âáá˛áŞ á°á¨áłáłá á¨á´ááŞáĽá ááŽááŤáá˝ áłáłá¤áᣠááá á¨ááἠá áááááľ áá፠áá፠áĽááááŁá˘ áĽá፠á¨ááἠáááŚá˝ ááá á¨á˛áŞ á°á¨áłáłáŽá˝ áĽá á°áááŽá˝ áááá ááá¨ááᢠá á°áľáł âáĽáááľ!â áĽááááᢠáá áááľ áŁááľáŁ áááľ ááááśá˝á áá áĽá á¨áá°ááᣠááá ááá á ááĽááľ áĽá á á áľá°ááá áááł áá°áŤáᢠáĽá á°áá ááš ááĽá°á á¨á¤áľ áĽáá¤áśá˝ á°ááŤááá á˝áá áĽá¨ááą áĽáá°áá áĽáľáŞááአáľá¨áľ ááá ááá áĽáŠ áá: á¨áááľ áááá á áá¸á, áĽá áá ááἠááĽá°á áĽáá°áááá ááá ááááá. ááłá˝ááá˘
áá á¨ááá áľ ááááŤáľ áŤáłááľáŤ áľáĽáá áłáłá¤á áľáááᥠá á ááľ áá ááá áĽá´áľ áŤáááŁá áĽá áá¨ááá˝á á á°á á ááśá˝ áŤá¨ááťáᢠá á፠ááá á áŽáľááᣠáĽáą áĽáá°áá¨á°áá áááá áá˝ááá˘
Map<RowKey, SortedMap<ColumnKey, ColumnValue>>
áá¸áá á¨á°á°á¨á°á¨ áŤááł á¨áŤá áŤááł ááᢠá¨áá áŤááł á¨ááááŞáŤá ááá á¨á¨áľá ááá ááá ááááá ááá - á¨áá¨áá፠ááá ááᢠááľá áá°á°á¨á°á¨ áŤááł ááá á¨ááá ááá°áá ááá á¨áááľá°á ááá ááá˘
á¨ááἠááłáá áľáááľ áááłá¨áľ, áśáľáľ á áááá˝á áĽááłá. á áá áááĄá áá° á áááá˝ áĽáá´áľ áá áľá áľ áĽáá°ááťá áá¨áłáľ áŤáľáááááłá. ááááŤáąá áááá ááá áá° á ááľ áĽáá¨á á (á áááŤá˝á áá á ááľ áşá ᣠáááľ áşá ᣠá ááľáľ - á¨áááá˝ááľá áŤá á ááá áá˝áá) áá á áĽáááą áľáááľ áá á áá°ááᢠáľááá , ááĽáá á¨ááááľ á¨ááłáĽ á°ááŁá áĽáááááá. á¨á°áá°á ááá ááľáĽ á¨áááľá á ááľ ááĽáᣠá¨á á int áĽáťá˘ áĽá áá ááľ ááá áááááľ áŤáá á ááľ á áá ááá¨áá, ááá°áá áááá°áá, á á ááľ á nth.
áá
ááĽá á¨ááá°á°á á¨áá˝ á°ááŁáá á áá áá á˛áá áá
á ááááá ááá á áááá áá áá°áá áŤáᢠáá
á áá ááá áááŞáŤ ááľáĽ á¨á°ááá¸á á ááľ ááᣠáĽá áá
á¨áŤááłá á¨ááááŞáŤ áĽá áá°á¨áłá ááá á¨ááá á ááľ ááᢠá¨áľáá ááľááá ááááľ á¨áľááá ááἠáĽáá°ááá á áááľáá. á áŤáłááľáŤ ááľáĽ á ááľ á áá á¨áĽ á SQL ááľáĽ áŤáá á°ááłáłá á ááŁáĽ áá á°áá á¨á˘
CREATE TABLE users (
user_id uu id,
name text,
year int,
salary float,
PRIMARY KEY(user_id)
)
á áá ááłá áá ááá ááá á ááľ á ááľ áŤáŤáľáłá, áĽá áĽáą á°áá á¨áá¨áá፠ááá áá.
á°á ááááťá˝á áĽáá´áľ áá°áŤá? á ááłááśáš áá° á ááľ ááľááá ááááľáŁ á ááłááśáš áá° áááᣠáĽá á ááłááśáš áá° áśáľá°áá áááłáᢠáá¤áąá á°áŤ áá˝ á áá á¨áĽáŁ áŤááł á ááŁáá ááłáááᣠá Python áááá -áááľ á ááŁáá ááłáááᣠááá áááá áĽá´áśá˝ á¨ááááĽá áľáŁ á ááá á¨ááááĽá áľ áĽá á¨ááá˝áá áľ ááá á¨ááá áĽá´áľ ááá á ááá˘
ááá¨áĄáĄ ááŁáŤáľ á˛áááľ áá° áá á ááľ á˛áá¨á ááá áá ááľá¨á áĽáá°ááá áľ
á ááłááľ á¨á°áá¨á ááá፠áĽááťááĄ- select * from users where, userid =
. á Oracle ááľáĽ áĽáá°ááłá¨á: áĽá áá¨áĽ áĽáá˝ááá, áááłáá˝á áĽáááááá áĽá ááá ááá áá°áŤá, á°á áááá˝ áŤáááłá. ááá áá áááłá á ááľ á¨á°áá°á á¨áľáááľ áááľ á°á áá á¨áá¨áĄ áŤáłááľáŤ áĽáŤááá ááááľ áĽáá°ááá˝á á
áŹáł áŤá°ááᢠááááŤáąá áľá áá°áľ á ááľ áá¨áá áĽáá´áľ áĽáá°ááá¨ááá ááá áľáááłáá
- áĽáá° ááá á¨á°ááá¨á°á á ááľ á ááľ áĽáť á áᾠᢠá¨ááŤá âáĽáşáŁ á ááá áá
á áĽáŤá ááááľ áĽá˝áááᢠáááľ ááŁáŤáľ á¨ááá˘" áááŞáŤáá áĽáá¨ááŤáá, ááá ááá áá°áŤá. áĽá á áá
áá á ááľ á áľá᪠ááá á°á¨á°á°.
á áá¨áŤ ááἠáá áľáááľ ááá ááá áĽáŠ ááᢠáĽá á áááľ ááľáĽ áĽáŤáá á˛áá˝á, áááłá, 4 áááŽá ááááŚá˝ á áá, á¨á፠ááá ááá ááĽá á áŁá áĽáŠ á áá°áá. ááááŤáąá áááľ ááŁáŤáľ áŤáłááľáŤ áááá áá¨ááá˝ á¨áá á°áá á¨áĽ á¨ááá ááľááá ááááśá˝áŁ áááá á¨áá¨á ááá¨áá˝ (á áá áááľá°á ááľáĽ áĽáááš áŤá) áĽáá˛á°á áľáĽ áĽá á¨á፠áĽáť áĽáá˛áŤáŁáŤ á¨ááŤáľá˝á áááŞáŤ ááᢠáá á¨áá á ááľ á ááá ááᣠáĽá ááá á°á á áŤáľá°áľá°ááá˘
á°á áááá˝á á ááłáá፠áĽáť á¨ááááá á¨ááᣠá áá áĽáŠ áĽááá áá áᢠáá á ááłááľ áá ááá˝ áĽáŤááá˝á ááťá áĽá á áááŤá áá ááá˝ áá°áŚá˝á ááŤá á ááĽáᢠáľááá , áĽááľáłááłáá-áá áá á¨áá¨áá፠ááá áŤáá áŤááł áá, ááá áá á ááľáĄ á¨á°á°á¨á°á¨ áŤááł áá.
áĽá áĽáˇá ááá á ááľáŁ áĽáąá áááľá°á ááá á¨ááááᢠáá ááá, á á°áŤá, á¨áááááŁá¸áá á ááśá˝ áŤáŤáľáłá, á áĽáą áĽááłáł áŤáłááľáŤ áá¨áá á á áŤá áĽáá´áľ áĽáá°áá°á¨á°á áĽá á áĽáŤááłááą ááľááá ááááľ áá áĽáá°áááἠáááááŁá. áŤá áááľ áá ááłááľ ááááá ááá á¨áááľá°á ááá áááĄá áá°áá áá á áľááá áĽáá´áľ áĽáá°ááá ááááááłá, áĽá፠áá áŚáł áĽáá°áááľáľ ááááááłá.
áá á áĽáááą áá áá ᣠáŽáááŹá°á á ááá áĽá፠ááŁáá ᣠáá° áĽáą á¨á°áá°á á¨á ááśá˝ áľáĽáľáĽ á ááľ ááá áĽááááá ᣠáĽá áĽáá° áááśá˝ ááááá ááááťáá˘
CREATE TABLE users_by_year_salary_id (
user_id uuid,
name text,
year int,
salary float,
PRIMARY KEY((year), salary, user_id)
ááá ááá áááŞáŤá áľáŠá¨áľ ááľáĄá¤ á¨ááááŞáŤá áá¨áŤá¨áŞáŤá (á áĽá áááłáŁ áááą) ááááá á¨ááá ááá ááᢠá ááľ ááá á¨á፠á áá á ááśá˝á ááŤáŤáľáľ áá˝áá, ááá á áá°áá. áĽá áááśá˝ áŤáᣠá¨ááá ááłáá ááá áá áá ááá áááá áĽáá˛á¨áł áĽáá°áá á á áá ááľáĽ ááááľ á áá áľáŁ áĽá á¨ááá áŤááľ ááá á ááśá˝ á¨áááľá°á ááá áá¸áᢠá áá áááł, á ááłáŠá áľ á á°á á°á¨á°á á áá á á ááľáĽ áá°áááá. áŤá áááľ, á¨ááááŞáŤá áááľ á¨á áá ááá áá, ááá°áá á°áá áľáá˝ áľááá áŤáá áá, ááá°. áĽáá´áľ áĽáá°áťáá, áááłá, ááá¨á áááá˝ áĽáŠá á¨áá ááľáŽá˝á: ááľáŽášá áĽááá¨ááŤáá, áĽá ááĽááą á¨áľáá áľáá áĽá áľáá˝ áĽáá°áá áĽáá˝ááá. á áŤáłááľáŤ áĽááá á á ááťáŤá áááł á˛áłá á¨ááἠááá ááľáŽá˝ áá¸á, ááĽáą á¨á°áťááľ áĽáŠááłáá˝ á°ááŁáŤá áááá.
áĽá áá°áá°á áĽá áá°áŚá˝á áĽááľáááŁáá
ááá á ááá áá áľ áá á¨áá°áá°á á á°á á°á¨á°á (ááá¨áľ ᣠáááŁáľ ᣠááááá) áĽáá°á°ááá áĽá á áá áá áááἠáĽáá°áááťá ááľáłááľ áŤáľáááááłáᢠááᥠáĽáá´áľ áĽáá°áá°á¨á°á áĽá áĽáá´áľ áĽáá°áá¨áá˝ á á áŤá áááľááᢠá¨áááľá°á áááá ááá¨á ááá á á°á á°á¨á°á áá°áá°á á¨ááá á á˛áľ á áá á¨áĽ ááá á áĽá ááἠáá° áĽáą ááľá°ááá ááááĽááłáᢠáá á¨ááŁá áá á áá°áŤáá˘
á á¨á´áá˝áá á á°á áááá˝ ááá áĽá ááááŞáŤ á á°áááąá áľ á ááľ ááá áľ ááľáĽ áĽáá°áá°á áĽá á¨ááŤá á áĽáŤááłááą ááľááá ááááľ á á°ááá áĽá á á°á áá ááłáá፠á˛ááľá á áá°ááᢠá áá áá°áŚá˝á á ááŤá ááá¨áĽ áĽáá˝ááá.
á¨áĽá áĽáŤ áĽáá°áá ááłáŤá where, and
, áĽá á°á áááá˝á áĽááááá, áĽá ááá ááá áĽáá°áá á°á
á áá. ááá áá á¨áááľá°á áááá á¨á°áá°á ááá áĽáť ááá áá á¨áá¨áá áĽá áľáá˝ áľááá áŤáá á¨áá áŤáłááľáŤ áá˛áŤáá á áŤááłá˝á ááľáĽ áá
ááá ááá áááááŞáŤá áĽá ááá áááááŞáŤá áŤáá áá
ááá áŤáá áľá áŚáł ááááľ á ááťáá á˛á á
áŹáł áŤá°ááᢠáĽáť á°ááá
áˇá - áĽáą á¨áá°áá áľ. á¨áá
ááľááá ááááľ áááá ááἠáĽáá°áá áááłáľ áĽá ááŁáŤáľ á ááĽáᢠáĽá áá
á ááľááá ááááľ ááľáĽ áŤáá á¨áá á
ááľ á ááá ááᣠáá
ááĽá ááá˘
á ááááá ááá˝ áŤááá áááł, á á˛áľ á á¨á´á ááá áŠ
á°á áááá˝á á ááłáááŤáŁ ááá á áĽáľáᣠááá á á°ááá á˘áá ááľá¨á ááťá á¨áááá áá ááľá¨á á ááĽá? ááá. áááľ á á¨á´ááá˝á áĽáť áá áá. á°á áááá˝á á áśáľáľ á¨á°ááŤáŠ ááááśá˝ ááááľ á¨ááá áśáľáľ á á¨á´ááá˝ áááŤá. á áá áááŁá áá áŚáł áŤáľáááĽáá áľ áá á áááᢠáá á áŁá ááŤáš ááĽáľ ááᢠááá á¨ááá˝ áá á áŁá áŤáá° áá, áá á áá°á ááá áá ááá áá˝áá. áá°á ááá á 10 á°áá ááľáĽ á¨áá á¨á ááá á á°á¨ááľ ááľáĽ ááá á á¨á áá á áľá°áłá˝ ááá˘
á á°áἠááááŤáľ áĽá á á áľá°ááá áááł áááľáŤáľ á ááľááá áŚáł áĽá áá°á á áŤááá áá¨á áĽááá áŤáŤááᢠá°ááá ᣠá áĽááṠᣠáśáľáľ á¨áá¨á ááĽá¨áὠᣠáĽáŤááłááłá¸á á ááľáľ á áááá˝ áŤáᾠᣠá°ááŁáááľ áŤáá á¨áá¨á áĽá á á°á¨á (ááá á ááá áá áľ áá) á ááľ áááľá°á á¨á ááľ á¨áá¨á ááĽá¨á ááľ áá á áá á ááááľ áá°áá áá˝ááᢠáĽá á ááŞááš áááľ áĽáŤááłááłá¸á áááľ á°á¨á᪠á áááá˝. áĽá á¨áá á áá áĽáť á˝ááŽáš ááááŤá. áá á áŁá áĽáŠ áľáááá˝ ááᣠáááľ á°á¨á᪠á¨á¤áľá¤áľá˛ áľáŤááŽá˝ áĽá ááŽá°á°á áá á ááᢠáľááá , Cassandra á ááá áá, á ááŤá˝ SQL, ááá áááááśá˝ á¨ááá áľ, á¨áá áááá˝, ááá á°ááŚá˝á ááá áŤáľáááááłá.
á áĽáŤáá áá°á¨áľ áááá ááá á˛ááá áĽáá°áááá. ááá ááá áá¨áá á áá°áá, ááá áá á áááŹá˝á á¨áĽáą áá áĽáá´áľ áĽáá°áá°áŤ áá. á¨á°ááŤáŠ áá¨ááá˝á á á°ááŤáŠ ááááśá˝ ááá á°ááłáłá áá¨ááá˝á á á°ááŤáŠ ááááśá˝ ááá á á¨ááá ááá°áá áŞáŤá ááš á áá ááááľ ááľááἠá ááĽáᢠáŤáá áá፠á Full Scan ááľáĽ áĽáááľááá áĽá áŤáłááľáŤ ááá áĽá á á áá°á ááá˘
áá¨áá áá°á á ááľá¨á áá°á á ááᢠáľá áá°á á á ážá˝ áĽáá¨áłáá, á¨á áá á áá á°ááá á¨ááἠááłáá˝ á¨ááá. á ááľá ááá 100 áá áĽááľááἠ100 áá áá°áá. á ááá á¨ááá á¨á áá ááŤá˝ ááá˘
á áá°á áááľ áĽáá˛á°áŤáŠ ááá¨ááá áááá˝á áĽááááŁáá. á¨ááááťá˝á áá˝ á á ááľ á áŁáĽ ááá ááľáĽ áĽáá˛ááľá á áááááᢠá¨áá á ááłáá áá áŤáá á¨áá°áľ áááľ ááĽá ááłá áá. áá áἠá áľááá á°á ááááťá˝á á á°áááś á á°áááąá áľ á ááľ á˘á¨ááá áĽáŠ áá, áĽá áľá 5 á ááá á°ááŞáá˝ áĽá¨á°ááááá á¨áá ááĽá - áĽá፠áŤáá áááá á áŁá áĽáŠ á áááá.
áá°áá°á á áááľá°á ááá á¨ááĽá¨áľ á°á¨á á ááľ áá ááá¨áŁáᢠááá¨á áŤáľááá á á¨á´áá˝áá á á°áᨠááá áááá á ááĽáá˘
áĽá á áŁá á áľáááá ááá: á°ááłáłáŠá ááἠá 100 á¨á°ááŤáŠ ááááśá˝ áááŁáľ áŤáľáááá 100 á¨á°ááŤáŠ á á¨á´ááá˝ áááŠáá.
ááá: hab.com