CQL3 рдореЗрдВ рдХреИрд╕реЗрдВрдбреНрд░рд╛ 2.0 рдореЗрдВ рд╕реНрдХреАрдорд╛ рд╕рд┐рдореБрд▓реЗрд╢рди рдЙрджрд╛рд╣рд░рдг

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдХреИрд╕рдВрдбреНрд░рд╛ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдЖрдкрдХреА рдЖрдВрдЦреЛрдВ рдХреЗ рдЪрд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреАрдмреА рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдЪрдпрди / рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛ред

рдХрд╛рд░реНрдп


рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ рдЬреЛ рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдХреЛ рдлреИрд▓рд╛рддрд╛ рд╣реИред рд▓реЛрдЧ рдмреИрдирд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЧреНрд░рд╛рд╣рдХ рднреБрдЧрддрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╣рдо (рдиреЗрдЯрд╡рд░реНрдХ), рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ (рд╡рд┐рддрд░рдХ), рдФрд░ рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдЗрд╕ рдкрд░ рдЖрдп рд╣реЛрддреА рд╣реИред рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╕реНрд▓реЙрдЯ рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ 20% рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рддрд┐рд╢рдд рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдХреЛрдВ рдХреЗ рдХрд╛рд░рдг рдмрдврд╝рддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдкреНрд░рддрд┐рд╢рдд рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЖрдкрдХреЛ рдЬрд░реВрд░рдд рд╣реИ: рдЬрд▓реНрджреА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ рдХреА рдЖрдп рдХреЛ рдХрд┐рд╕реА рднреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЧрд┐рдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдХреНрд▓рд┐рдХреЛрдВ рдХреА рд╕рдордп-рд╕рд╛рд░рдгреА рд░рдЦреЗрдВред


рддреНрдпрд╛рдЧ



рд╢реИрдХреНрд╖рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо



рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 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, -- day in the format of 'YYYY-MM-DD' reward_percent float, -- value from 0.0 to 1.0 PRIMARY KEY (id, effective_since) --   (id)    (effective_since) ) WITH CLUSTERING ORDER BY (effective_since DESC); --    LIMIT 1  INSERT INTO reseller (id, effective_since, reward_percent) VALUES ('supaboobs', '2011-02-13', 0.2); INSERT INTO reseller (id, effective_since, reward_percent) VALUES ('supaboobs', '2012-01-22', 0.25); INSERT INTO reseller (id, effective_since, reward_percent) VALUES ('supaboobs', '2013-11-30', 0.3); 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рддреАрди рд▓рд╛рдЗрдиреЗрдВ рдмрдирд╛рдИ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ '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, -- day in the format of 'YYYY-MM-DD' time timestamp, ad_id text, amount float, PRIMARY KEY ((reseller_id, day), time, ad_id) --   (reseller_id, day)    (time, ad_id) ) WITH CLUSTERING ORDER BY (time DESC); --      

рдХреБрдЫ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВред
 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, -- day in the format of 'YYYY-MM-DD' amount double, PRIMARY KEY (reseller_id, day) --   (reseller_id)    (day) ) WITH CLUSTERING ORDER BY (day DESC); --     

рдЗрд╕реЗ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рднрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдХреЛрдб 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)); --   (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, -- day in the format of 'YYYY-MM-DD' clicks counter, PRIMARY KEY ((reseller_id, day))); --   (reseller_id, day),    CREATE TABLE clicks_per_reseller ( reseller_id text, clicks counter, PRIMARY KEY (reseller_id)); --   (reseller_id),    


рдЯреЗрдХреНрд╕реНрдЯ рдЖрдИрдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛

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 -- INSERT, UPDATE, DELETE ... APPLY BATCH; 


RDBMS рдореЗрдВ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдмреИрдЪ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдЙрдирдХреА рдорджрдж рд╕реЗ, рд╕реА * рд╕рднреА рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХрдИ рдХрдорд╛рдВрдб рдореЗрдВ рдирд╣реАрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдмреИрдЪ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВред
  1. рдЕрд╕рдореНрдмрджреНрдз - BEGIN UNLOGGED BATCH - рдирд┐рдпрдорд┐рдд рдмреИрдЪред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╕рдордиреНрд╡рдпрдХ рдиреЛрдб (рдЬреЛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдП CQL рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдФрд░ рдЕрдиреНрдп рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП) рдмреИрдЪ рдХреЗ рдмреАрдЪ рдореЗрдВ рдорд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рд╕рдВрдЧрддрд┐ рдмрд░реНрдмрд╛рдж рд╣реЛ рд╕рдХрддреА рд╣реИред
  2. рдкрд░рдорд╛рдгреБ (рдкрд░рдорд╛рдгреБ) - BEGIN BATCH - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, C * рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдпрд╛ рддреЛ рд╕рднреА рдбреЗрдЯрд╛ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдСрдкрд░реЗрд╢рди рд▓рдЧрднрдЧ 30% рдзреАрдорд╛ рд╣реИред


рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред SELECT ... FROM ... WHERE RDBMS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреА рдХрдИ рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗрд╕рдВрджреНрд░рд╛ рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг RDBMS рд╕реЗ рдЕрд▓рдЧ рд╣реИред рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рд╕реАрдХреНрдпреВрдПрд▓ рдФрд░ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛ рд╕реЗ рднреНрд░рдорд┐рдд рди рд╣реЛрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдХреБрдЫ рдЪрд╛рд▓реЗрдВ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рдереАрдВ, рд▓реЗрдХрд┐рди рдХрдИ рд╣реИрдВ, рдХрдИ рдФрд░ рд╣реИрдВред

рдЪрдХреНрд░ рдХрд╛ рдкрд┐рдЫрд▓рд╛ рд▓реЗрдЦ ред
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдЧрд▓рд╛ рд▓реЗрдЦ ред

Source: https://habr.com/ru/post/In204026/


All Articles