рдЪрдпрди рдХрд░реЗрдВ ... CQL3 рдореЗрдВ рдХреИрд╕рд╛рдВрджреНрд░рд╛ 2.0 рдореЗрдВ рдХрд╣рд╛рдВ рд╕реЗ рдкреНрд░рд╢реНрди рд╣реИрдВ

рдХреИрд╕рдВрдбреНрд░рд╛ (рдЗрд╕рдХреЗ рдмрд╛рдж C * ) WHERE рдЗрд╕рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрд╛рд░рдг рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдЬрдЯрд┐рд▓ рдФрд░ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧреЗрдЧрд╛ рдпрджрд┐ рдЖрдкрдиреЗ рдЪрдХреНрд░ рд╕реЗ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ рдЬрд╣рд╛рдБ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдмрддрд╛рдпрд╛ рдХрд┐ C * рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрдврд╝реЗрдВред

рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реА * рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд░рдирд╛ рд╣реИред

CQL рдФрд░ SQL рдХреЗ рдмреАрдЪ рдХреБрдЫ рдЕрдВрддрд░


рдХреИрд╕рдВрдбреНрд░рд╛ рдХреНрд╡реЗрд░реА рд▓реИрдВрдЧреНрд╡реЗрдЬ ( CQL ) рдХреЗ рд╕реЗрд▓реЗрдХреНрдЯреЗрдб рдХреНрд╡реЗрд░реАрдЬрд╝ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп SQL JOIN , GROUP BY рдСрдкрд░реЗрд╢рдВрд╕ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдФрд░ WHERE рдСрдкрд░реЗрд╢рди рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред SQL рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рднреА рдХреЙрд▓рдо рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ CQL рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд┐рднрд╛рдЬрди рдХреБрдВрдЬреА , рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХреЙрд▓рдо рдФрд░ рд╕реЗрдХреЗрдВрдбрд░реА рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ ред
рдиреЛрдЯ: C * 2.0 рдореЗрдВ, рдЖрдк SQL рдЗрдВрдбреЗрдХреНрд╕ рдЬреИрд╕реЗ рдХрд┐рд╕реА рднреА рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рд╕реЗрдХрдВрдбрд░реА INDEX рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреНрд╡рд┐рддреАрдпрдХ рдХреИрд╕рдВрдбреНрд░рд╛ рдЗрдВрдбреЗрдХреНрд╕ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬреЛ рдЖрдк рд╕реЗ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрди рдкрд░ WHERE рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рдореБрдЦ рд╕реНрддрдВрднреЛрдВ рдкрд░ рдкреНрд░рд╢реНрдиреЛрдВ рд╕реЗ рднреА рдмрджрддрд░ рд╣реИред


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


 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); 


WHERE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛


рдореЛрдЯреЗ рддреМрд░ рдкрд░, "рдирд┐рд╕реНрдкрдВрджрди" рд╢рдмреНрдж рдпрд╣рд╛рдБ рдЕрдиреБрдЪрд┐рдд рд╣реИред рдЦреЛрдЬ рдХрд╣рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИред рд╕реА * рд▓рдЧрднрдЧ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз WHERE рдХреИрд╕рдВрдбреНрд░рд╛ рдХреЛ рдиреЛрдб рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╕реНрддрдВрднреЛрдВ рдХреА рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рддреБрд▓рдирд╛ рдХрд░реЗрдВ

рдЪреВрдВрдХрд┐ рдХреЛрдИ JOIN рдирд╣реАрдВ рд╣реИ, рдЖрдк рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рдХреА рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
 SELECT * from ad_click WHERE maxTimeuuid(day) = maxTimeuuid(3141592653589); -- ; 


рдФрд░, рдпрд╛

WHERE рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдПрдХрд╛рдзрд┐рдХ рд╢рд░реНрддреЛрдВ рдХреЛ OR рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛, рдХреЗрд╡рд▓ AND рдХрд╛рдоред рдФрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рддрдм рднреА рд╣рдореЗрд╢рд╛ рдирд╣реАрдВред

рд╕рдорд╛рдирддрд╛ =

рд╕рдорд╛рдирддрд╛ рдСрдкрд░реЗрдЯрд░реЛрдВ (=) рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрднрдЧ рдЕрд╕реАрдорд┐рдд рд╣реИред рдпрд╣ рдХреБрдВрдЬреА рдХреЙрд▓рдо рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХреЙрд▓рдо рддрдХ рд╕реАрдорд┐рдд рд╣реИред рдФрд░ рдЖрдкрдХреЛ рдЕрдЧрд▓реЗ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдкрд┐рдЫрд▓реЗ рдкреНрд░рдореБрдЦ рдХреЙрд▓рдо рдХреА рднреА рддреБрд▓рдирд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рд╣реА:
 SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND -- OK day = '2013-11-29' AND -- OK time = 3141592653589 AND -- OK ad_id = '890_567_234'; -- OK 

рдЧрд▓рдд:
 SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day = '2013-11-29' AND amount = 0; -- !    . SELECT * FROM ad_click WHERE day = '2013-11-29' AND -- !    reseller_id. time = 3141592653589 AND ad_id = '890_567_234'; SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day = '2013-11-29' AND ad_id = '890_567_234'; -- !    time. 


рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдореЗрдВ

рд╕рдорд╛рд╡реЗрд╢рди рдСрдкрд░реЗрдЯрд░ (IN) рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рддрд░рдг рдХреБрдВрдЬреА рдореЗрдВ рдЕрдВрддрд┐рдо рдХреЙрд▓рдо рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдореЗрдВ рдЕрдВрддрд┐рдо рдХреЙрд▓рдо рддрдХ рд╕реАрдорд┐рдд рд╣реИред

рд╕рд╣реА:
 SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day IN ('2013-11-28', '2013-11-29') AND -- OK time = 3141592653589 AND ad_id IN ('890_567_234', '890_567_010'); -- OK 

рдЧрд▓рдд:
 SELECT * FROM ad_click WHERE reseller_id IN ('supaboobs') AND -- !      . day = '2013-11-28' AND time = 3141592653589 AND ad_id = '890_567_234'; SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day = '2013-11-28' AND time IN (3141592653589) AND -- !      . ad_id = ('890_567_234'); 


рддреБрд▓рдирд╛ рд╕рдВрдЪрд╛рд▓рдХ = >> = << =


рддреБрд▓рдирд╛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛

рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдорд╛рди рджрд╛рдИрдВ рдУрд░ред
рд╕рд╣реА:
 SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND -- OK day = '2013-11-29'; -- OK 

рдЧрд▓рдд:
 SELECT * FROM ad_click WHERE 'supaboobs' = reseller_id AND -- !    . '2013-11-29' = day AND -- !    . 3141592653589 < time; -- !    . 


рддреБрд▓рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ

рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреА CQL рдХреНрд╡реЗрд░реА рдХреЗ рдЕрдВрддрд┐рдо рдХреЙрд▓рдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХреЙрд▓рдо рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╣реА:
 SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day = '2013-11-29' AND time >= 3141592653589; -- OK SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day = '2013-11-29' AND time = 3141592653589 AND ad_id > '890_567_234'; -- OK 

рдЧрд▓рдд:
 SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day = '2013-11-29' AND time >= 3141592653589 AND -- !     . ad_id = '890_567_234'; SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day = '2013-11-29' AND time >= 3141592653589 AND ad_id < '890_567_234'; -- !     . SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day = '2013-11-29' AND ad_id < '890_567_234'; -- !     time. SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day < '2013-11-29'; -- !    . 


рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб - ALL рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ

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


рд╕рд╣реА:
 SELECT * FROM ad_click WHERE time = 3141592653589 AND -- OK ad_id > '890_567_234' -- OK ALLOW FILTERING; SELECT * FROM ad_click WHERE time >= 3141592653589 AND -- OK time <= 3141592653589 -- OK ALLOW FILTERING; 

рдЧрд▓рдд:
 SELECT * FROM ad_click WHERE time >= 3141592653589 AND ad_id > '890_567_234' -- !    . ALLOW FILTERING; SELECT * FROM ad_click WHERE time >= 3141592653589 AND time <= 3241592653589 AND ad_id = '890_567_234' -- !     . ALLOW FILTERING; 


рджреНрд╡рд┐рддреАрдпрдХ рд╕реВрдЪрдХрд╛рдВрдХ

рдорд╛рдзреНрдпрдорд┐рдХ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗрд╡рд▓ рд╕рдорд╛рдирддрд╛ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИред рджреНрд╡рд┐рддреАрдпрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдЕрдиреНрдп рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╛ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рджреНрд╡рд┐рддреАрдпрдХ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛:
 CREATE INDEX on ad_click (amount); 


рд╕рд╣реА:
 SELECT * FROM ad_click WHERE amount = 0.0075; -- OK SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day = '2013-11-29' AND time = 3141592653589 AND ad_id = '890_567_234' AND amount = 0.0075; -- OK 

рдЧрд▓рдд:
 SELECT * FROM ad_click WHERE reseller_id = 'supaboobs' AND day = '2013-11-29' AND time = 3141592653589 AND ad_id = '890_567_234' AND amount > 0.0; -- !       . 


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


рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдореЗрд░рд╛ рдЪрдпрди рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?"

рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ




рдЪрдХреНрд░ рдХрд╛ рдкрд┐рдЫрд▓рд╛ рд▓реЗрдЦ ред

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


All Articles