рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдХреИрд╕рдВрдбреНрд░рд╛ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдЖрдкрдХреА рдЖрдВрдЦреЛрдВ рдХреЗ рдЪрд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреАрдмреА рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдЪрдпрди / рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛ред
рдХрд╛рд░реНрдп
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ рдЬреЛ рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдХреЛ рдлреИрд▓рд╛рддрд╛ рд╣реИред рд▓реЛрдЧ рдмреИрдирд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЧреНрд░рд╛рд╣рдХ рднреБрдЧрддрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╣рдо (рдиреЗрдЯрд╡рд░реНрдХ), рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ (рд╡рд┐рддрд░рдХ), рдФрд░ рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдЗрд╕ рдкрд░ рдЖрдп рд╣реЛрддреА рд╣реИред рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╕реНрд▓реЙрдЯ рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ 20% рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рддрд┐рд╢рдд рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдХреЛрдВ рдХреЗ рдХрд╛рд░рдг рдмрдврд╝рддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдкреНрд░рддрд┐рд╢рдд рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЖрдкрдХреЛ рдЬрд░реВрд░рдд рд╣реИ: рдЬрд▓реНрджреА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ рдХреА рдЖрдп рдХреЛ рдХрд┐рд╕реА рднреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЧрд┐рдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдХреНрд▓рд┐рдХреЛрдВ рдХреА рд╕рдордп-рд╕рд╛рд░рдгреА рд░рдЦреЗрдВред
рддреНрдпрд╛рдЧ
- рдпрд╣ рдЖрд▓реЗрдЦ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕рд╣реА рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдирд╣реАрдВ рд╣реИред
- рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЛ рдЕрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЪрд╛рдВрджреА рдХреА рдЧреЛрд▓реА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
рд╢реИрдХреНрд╖рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо
- рдХреИрд╕рдВрдбреНрд░рд╛ (рдЗрд╕рдХреЗ рдмрд╛рдж C * ) рдПрдХ рд╡рд┐рддрд░рд┐рдд NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИред
- cqlsh - C * CQL рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиред
- CQL рдПрдХ SQL рдЬреИрд╕реА рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рд╣реИред рд╕реА рдЕрд╕реЗрдВрджреНрд░рд╛ рдХреНрдпреВ uery рдПрд▓ рдкреАрдбрд╝рд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд╖рд┐рдкреНрддрд┐рдХрд░рдгред
- Keyspace рд░рд┐рд▓реЗрд╢рдирд▓ DBMS рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред
- рдмреБрдирд┐рдпрд╛рджреА рднрдВрдбрд╛рд░рдг рдЗрдХрд╛рдИ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ ред рдПрдХ рдкрдВрдХреНрддрд┐ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ 2 рдмрд┐рд▓рд┐рдпрди рдХреЙрд▓рдо рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
- рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА - рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ред рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрди рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрджрд░ рднреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- рд╡рд┐рддрд░рдг рдХреБрдВрдЬреА рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд╣реИред
- рдХреНрд▓рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╣реИред
- рдиреЛрдб (рдиреЛрдб) - рдХреИрд╕реЗрдВрдбреНрд░рд╛ рдХреА рдЬрд╛рд╡рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ред рд╕рднреА рдиреЛрдбреНрд╕ рдмрд░рд╛рдмрд░ рд╣реИрдВред рдХреЛрдИ рдЧреБрд░реБ-рджрд╛рд╕ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВред
- рдХреНрд▓рд╕реНрдЯрд░ - рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдиреЛрдбреНрд╕ред
- рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЧрдП рд╕реЗрд▓ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ рдкрдврд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╣ рд▓рдЧрднрдЧ рд╕рдЪ рд╣реИ)ред
рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕
6 рдиреЛрдб рд╣реИрдВ ред
cqlsh
cqlsh
рдЪрд▓рд╛рдПрдВред
Connected to Test Cluster at localhost:9160. [cqlsh 4.1.0 | Cassandra 2.0.2 | CQL spec 3.1.1 | Thrift protocol 19.38.0] cqlsh>
рдПрдХ рдХреАрд╕реНрдкреЗрд╕ рдмрдирд╛рдПрдБ
рдПрдХ рдХреБрдВрдЬреАрд╕реНрдкреЗрд╕ (рдбреЗрдЯрд╛рдмреЗрд╕) рдмрдирд╛рдПрдБред
CREATE KEYSPACE ad_network WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '3' }; USE ad_network;
replication_factor
рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдЧрд╛ред
рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдПрдВ
рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ рддрд╛рд▓рд┐рдХрд╛
рдПрдХ рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛ рд╕реЗ рднрд░реЗрдВред рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣рдо рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ рдХреА рдмреНрдпрд╛рдЬ рджрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред
CREATE TABLE reseller ( id text, effective_since text,
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рддреАрди рд▓рд╛рдЗрдиреЗрдВ рдмрдирд╛рдИ рд╣реИрдВред рд▓реЗрдХрд┐рди
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ
'supaboobs'
рд╡рд┐рддрд░рдг рдХреБрдВрдЬреА рдФрд░ рддреАрди
рдХреНрд▓рд╕реНрдЯрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдмрдирд╛рдИ:
'2011-02-13'
,
'2012-01-22'
рдФрд░
'2013-11-30'
ред рдпрд╣ рд░реЗрдЦрд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рднреА, рд╣рдорд╛рд░реЗ рдЫрд╣ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рддреАрди рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВ рд╕рд╛рдордЧреНрд░реА:
cqlsh:ad_network> SELECT * FROM reseller WHERE id='supaboobs'; id | effective_since | reward_percent -----------+-----------------+---------------- supaboobs | 2013-11-30 | 0.3 supaboobs | 2012-01-22 | 0.25 supaboobs | 2011-02-13 | 0.2
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЬрдм рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдмреНрдпрд╛рдЬ рджрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗ:
cqlsh:ad_network> SELECT * FROM reseller WHERE id = 'supaboobs' LIMIT 1; id | effective_since | reward_percent -----------+-----------------+---------------- supaboobs | 2013-11-30 | 0.3
Ad_click рдЯреЗрдмрд▓
рдЗрд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдмреИрдирд░реЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗред
рдХреЙрд▓рдо: рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ рдЖрдИрдбреА, рджрд┐рди (рдЦреЛрдЬ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП), рджрд┐рдирд╛рдВрдХ + рдХреНрд▓рд┐рдХ рд╕рдордп, рдмреИрдирд░ рдЖрдИрдбреА, рдХреНрд▓рд┐рдХ рдХреА рдХреБрд▓ рд▓рд╛рдЧрддред
CREATE TABLE ad_click ( reseller_id text, day text,
рдХреБрдЫ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВред
INSERT INTO ad_click (reseller_id, day, time, ad_id, amount) VALUES ('supaboobs', '2013-11-28', '2013-11-28 02:16:52', '890_567_234', 0.005); INSERT INTO ad_click (reseller_id, day, time, ad_id, amount) VALUES ('supaboobs', '2013-11-28', '2013-11-28 07:17:35', '890_567_234', 0.005); INSERT INTO ad_click (reseller_id, day, time, ad_id, amount) VALUES ('supaboobs', '2013-11-29', '2013-11-29 17:18:51', '890_567_211', 0.0075); INSERT INTO ad_click (reseller_id, day, time, ad_id, amount) VALUES ('supaboobs', '2013-11-29', '2013-11-29 22:20:37', '890_567_211', 0.0075); INSERT INTO ad_click (reseller_id, day, time, ad_id, amount) VALUES ('supaboobs', '2013-11-30', '2013-11-30 11:21:56', '890_567_234', 0.005); INSERT INTO ad_click (reseller_id, day, time, ad_id, amount) VALUES ('supaboobs', '2013-12-01', '2013-12-01 12:21:59', '890_567_010', 0.01);
рдЖрдЗрдП рдЙрди рдкрд░ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред
cqlsh:ad_network> SELECT * FROM ad_click; reseller_id | day | time | ad_id | amount -------------+------------+---------------------+-------------+-------- supaboobs | 2013-12-01 | 2013-12-01 12:21:59 | 890_567_010 | 0.01 supaboobs | 2013-11-30 | 2013-11-30 11:21:56 | 890_567_234 | 0.005 supaboobs | 2013-11-28 | 2013-11-28 07:17:35 | 890_567_234 | 0.005 supaboobs | 2013-11-28 | 2013-11-28 02:16:52 | 890_567_234 | 0.005 supaboobs | 2013-11-29 | 2013-11-29 22:20:37 | 890_567_211 | 0.0075 supaboobs | 2013-11-29 | 2013-11-29 17:18:51 | 890_567_211 | 0.0075
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдордЧреНрд░
рд╡рд┐рддрд░рдг рдХреБрдВрдЬреА (reseller_id, day)
, 4 рд▓рд╛рдЗрдиреЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдВ рдмрдирд╛рдИ рдЧрдИ рдереАрдВ (рдпрджрд┐ рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ, рддреЛ
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЛ рдкрдврд╝реЗрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдЬрдЧрд╣ рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛)ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдо рд╣рд░ рджрд┐рди рдПрдХ рдирдИ рд░реЗрдЦрд╛ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛ рд╕реЗ рднрд░ рджреЗрдВрдЧреЗред
рдХреНрд▓рд╕реНрдЯрд░ рдХреБрдВрдЬреА рднреА рд╕рдордЧреНрд░ рд╣реИ -
time, ad_id
ред
рд░рд╛рд╢рд┐_by_day рддрд╛рд▓рд┐рдХрд╛
рдЪреВрдВрдХрд┐ рдмреНрдпрд╛рдЬ рджрд░ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреА рд╣реИ, рдЖрдк рдЗрд╕ рдкрд░ рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдЬреАрдд рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдПрдХ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдЬреЛ рд╕рдорд╛рди рдзрди рд╕рдВрдЪрдп рдХрд░реЗрдЧреА, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреНрд▓рд┐рдХ рдореЗрдВ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛:
CREATE TABLE amount_by_day ( reseller_id text, day text,
рдЗрд╕реЗ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рднрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдХреЛрдб
ad_click
рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛, рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░
amount_by_day
рдХреЛ
amount_by_day
ред
рдХрд╛рдЙрдВрдЯ рдЯреЗрдмрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЬрд╛рдирдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдордиреЗ рдХрд┐рд╕ рдмреИрдирд░ рдкрд░ рдХрд┐рддрдиреА рдмрд╛рд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╕рднреА рдЫрд╣ рдиреЛрдбреНрд╕ рдореЗрдВ
SELECT COUNT(0) FROM ad_click WHERE ad_id='...'
рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реЛрдЧрд╛ (рдФрд░ CQL рдореЗрдВ рдХреЛрдИ
COUNT
рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ), рддреЛ C * рдореЗрдВ
рдХрд╛рдЙрдВрдЯрд░ рдкрд░ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ - рд░реЛрдВред
рдХрд╛рдЙрдВрдЯрд░ рд╕реНрддрдВрдн рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ
timestamp
,
text
,
double
, рдЖрджрд┐ рдХреА рддрд░рд╣ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдорд╛рдПрдВ рд╣реИрдВред рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рд╣реИ, рддреЛ рдЕрдиреНрдп рд╕рднреА рдХреЙрд▓рдо рднреА рдЯрд╛рдЗрдк рдХрд╛рдЙрдВрдЯрд░ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЪрд▓реЛ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдБ:
CREATE TABLE clicks_per_ad ( ad_id text, clicks counter, PRIMARY KEY (ad_id));
рдФрд░ рдЗрд╕рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЖрдк
clicks
рдХреЙрд▓рдо рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
cqlsh:ad_network> SELECT * FROM clicks_per_ad; (0 rows) cqlsh:ad_network> UPDATE clicks_per_ad SET clicks = clicks + 1 WHERE ad_id = '890_567_234'; cqlsh:ad_network> SELECT * FROM clicks_per_ad; ad_id | clicks -------------+-------- 890_567_234 | 1 (1 rows) cqlsh:ad_network> UPDATE clicks_per_ad SET clicks = clicks + 1 WHERE ad_id = '890_567_234'; cqlsh:ad_network> SELECT * FROM clicks_per_ad; ad_id | clicks -------------+-------- 890_567_234 | 2 (1 rows) cqlsh:ad_network> UPDATE clicks_per_ad SET clicks = 0 WHERE ad_id = '890_567_234'; cqlsh:ad_network> SELECT * FROM clicks_per_ad; ad_id | clicks -------------+-------- 890_567_234 | 0 (1 rows)
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣
signed int
ред рдпрд╛рдиреА рдЕрд╕рд╛рдзрд╛рд░рдг рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░реЗрдВрдЬ рдореЗрдВ -2 ^ 63 - + 2 ^ 63ред
рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреЛрдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдирд╣реАрдВ рдереАрдВ, рд▓реЗрдХрд┐рди
UPDATE
рдЖрджреЗрд╢ рдХреЗ рдмрд╛рдж рдПрдХ рдЕрдЪрд╛рдирдХ рдкреНрд░рдХрдЯ рд╣реБрдИред рдпрд╣ CQL рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред
INSERT
рдФрд░
UPDATE
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдХрдорд╛рдВрдб рд╣реИрдВред рдореИрдВ рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ рдХрд┐ C * рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ / рдбрд╛рд▓рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ (рдпрд╛ 'рдЕрднреА рддрдХ рдирд╣реАрдВ')ред рдЗрд╕реЗ "рд╣рд▓реНрдХреЗ рд▓реЗрдирджреЗрди" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдмреЗрд╢рдХ, рдХреНрд▓рд┐рдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд┐рд╕реА рднреА рдорд╛рдирджрдВрдб (рдХреБрдВрдЬреА) рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
CREATE TABLE clicks_per_reseller_per_day ( reseller_id text, day text,
рдЯреЗрдХреНрд╕реНрдЯ рдЖрдИрдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛
RDBMS рдореЗрдВ, рд╣рдо рддрд╛рд░ int рдХреЗ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рд╢рд╛рдмреНрджрд┐рдХ рдмрдирд╛ рджрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдХреБрдЫ рд╕рд╛рд░реНрдердХ рд╣реЛрдЧрд╛? рд╣рд╛рдВ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рдиреБрдХрд╕рд╛рди рд╣реЛрдЧрд╛ред рдирд┐рдЬреА рддреМрд░ рдкрд░, рдЗрд╕рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рдЙрджрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ред рд╣рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЪрд╛рд▓рдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рдЖрдИрдбреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдмреАрдорд╛ рдкреЙрд▓рд┐рд╕реА рдХреА рдЖрдИрдбреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рдкрддреНрд░ рдорд┐рд╢реНрд░рдг рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рд╕рдкреЛрд░реНрдЯ рдЖрдИрдбреА - рджреЛ рдЕрдХреНрд╖рд░ рдФрд░ 6 рдЕрдВрдХ, рдШрд░ рдХреЗ рдирдВрдмрд░ рдЕрдХреНрд╕рд░ рдЕрдХреНрд╖рд░реЛрдВ рдпрд╛ рд╣рд╛рдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде, рдЖрджрд┐ред
C * рдореЗрдВ, рд╢реБрд╖реНрдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ RDBMS рдХреЗ рд╡рд┐рдкрд░реАрдд рддреНрд╡рд░рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ C * рдореЗрдВ рдХреЛрдИ рдСрдЯреЛ рдЗрдиреНрдХреНрд░реАрдореЗрдВрдЯ рдирд╣реАрдВ рд╣реИ (рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдЪрд╛рдирдХ рдпреВрдирд┐рдХ рдЖрдИрдбреА рдХреА рдЬрд░реВрд░рдд рд╣реИ рддреЛ
рдЯрд╛рдЗрдордпреБрдб рд╣реИ )ред рдЕрд╕рд╛рдорд╛рдиреНрдп
text
рд╕реНрддрдВрдн рдкреНрд░рдХрд╛рд░
reseller_id
рд░реВрдк рдореЗрдВ
text
рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд╕реА * рдореЗрдВ, рдПрдХ рд╡рд┐рднрд╛рдЬрди рдХреБрдВрдЬреА рдХреЛ рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рдкреНрд░рддреНрдпрдХреНрд╖ рддреБрд▓рдирд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╢рд┐рдерд┐рд▓рддрд╛ рдирд╣реАрдВ рд╣реИред
рдбреЗрдЯрд╛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ
рдПрдХ рдХреНрд▓рд┐рдХ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ
4 UPDATE
рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рдореИрдВ рдкрд╛рдЧрд▓ рдирд╣реАрдВ рд╣реВрдВред C * рдкрд░ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЬрд▓реНрджреА рдПрдХ рдСрдкрд░реЗрд╢рди рд╣реИ, рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред 6 рдиреЛрдбреНрд╕ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЧрддрд┐
MongoDB рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ
100 рдЧреБрдирд╛ рддреЗрдЬ рдпрд╛ HBase рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2-5 рдЧреБрдирд╛ рддреЗрдЬ рд╣реЛрдЧреА , RDBMS рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред C * рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди (
рд╕рдВрдШрдирди ,
рд╕рдВрдкреАрдбрд╝рди ) рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рднреА INSERT рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, BATCHs рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡реЗ рд╕рдорд╛рди рд╡рд┐рддрд░рдг рдХреБрдВрдЬреА (рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдХреЗ рднреАрддрд░) рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
BEGIN BATCH
RDBMS рдореЗрдВ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдмреИрдЪ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдЙрдирдХреА рдорджрдж рд╕реЗ, рд╕реА * рд╕рднреА рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХрдИ рдХрдорд╛рдВрдб рдореЗрдВ рдирд╣реАрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдмреИрдЪ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВред
- рдЕрд╕рдореНрдмрджреНрдз -
BEGIN UNLOGGED BATCH
- рдирд┐рдпрдорд┐рдд рдмреИрдЪред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╕рдордиреНрд╡рдпрдХ рдиреЛрдб (рдЬреЛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдП CQL рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдФрд░ рдЕрдиреНрдп рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП) рдмреИрдЪ рдХреЗ рдмреАрдЪ рдореЗрдВ рдорд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рд╕рдВрдЧрддрд┐ рдмрд░реНрдмрд╛рдж рд╣реЛ рд╕рдХрддреА рд╣реИред - рдкрд░рдорд╛рдгреБ (рдкрд░рдорд╛рдгреБ) -
BEGIN BATCH
- рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, C * рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдпрд╛ рддреЛ рд╕рднреА рдбреЗрдЯрд╛ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдСрдкрд░реЗрд╢рди рд▓рдЧрднрдЧ 30% рдзреАрдорд╛ рд╣реИред
рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред
SELECT ... FROM ... WHERE
RDBMS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреА рдХрдИ рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗрд╕рдВрджреНрд░рд╛ рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг RDBMS рд╕реЗ рдЕрд▓рдЧ рд╣реИред рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рд╕реАрдХреНрдпреВрдПрд▓ рдФрд░ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛ рд╕реЗ рднреНрд░рдорд┐рдд рди рд╣реЛрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдХреБрдЫ рдЪрд╛рд▓реЗрдВ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рдереАрдВ, рд▓реЗрдХрд┐рди рдХрдИ рд╣реИрдВ, рдХрдИ рдФрд░ рд╣реИрдВред
рдЪрдХреНрд░ рдХрд╛ рдкрд┐рдЫрд▓рд╛ рд▓реЗрдЦ ред
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдЧрд▓рд╛ рд▓реЗрдЦ ред