cassandra-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vladimir Yudovin <vla...@winguzone.com>
Subject Re: Proprietary Replication Strategies: Cassandra Driver Support
Date Sat, 08 Oct 2016 17:56:18 GMT
Well, it can be useful in some scenarios - e.g. temporary tables on nearest or the same node.

Best regards, Vladimir Yudovin, 
Winguzone - Hosted Cloud Cassandra on Azure and SoftLayer.
Launch your cluster in minutes.




---- On Sat, 08 Oct 2016 13:44:00 -0400 Jeff Jirsa&lt;jjirsa@gmail.com&gt; wrote ----


I'm sure that's what he meant, I just disagree that it sounds useful 
 
-- 
Jeff Jirsa 
 
 
&gt; On Oct 8, 2016, at 10:33 AM, Vladimir Yudovin &lt;vladyu@winguzone.com&gt;
wrote: 
&gt; 
&gt; As far as I understand Edward meant to have option determinate actual storage node
on client side, by driver, disregarding key hash/tokens mechanism. 
&gt; 
&gt; Best regards, Vladimir Yudovin, 
&gt; Winguzone - Hosted Cloud Cassandra on Azure and SoftLayer. 
&gt; Launch your cluster in minutes. 
&gt; 
&gt; 
&gt; 
&gt; 
&gt; ---- On Sat, 08 Oct 2016 13:17:14 -0400 Jeff Jirsa &amp;lt;jjirsa@gmail.com&amp;gt;
wrote ---- 
&gt; 
&gt; That sounds awful, especially since you could just use SimpleStrategy with RF=1 and
then bootstrap / decom would handle resharding for you as expected. 
&gt; 
&gt; -- 
&gt; Jeff Jirsa 
&gt; 
&gt; 
&gt; &amp;gt; On Oct 8, 2016, at 10:09 AM, Edward Capriolo &amp;lt;edlinuxguru@gmail.com&amp;gt;
wrote: 
&gt; &amp;gt; 
&gt; &amp;gt; I have contemplated using LocalStrategy as a "do it yourself client
side 
&gt; &amp;gt; sharding system". 
&gt; &amp;gt; 
&gt; &amp;gt; On Sat, Oct 8, 2016 at 12:37 AM, Vladimir Yudovin &amp;lt;vladyu@winguzone.com&amp;gt;

&gt; &amp;gt; wrote: 
&gt; &amp;gt; 
&gt; &amp;gt;&amp;gt; Hi Prasenjit, 
&gt; &amp;gt;&amp;gt; I would like to get the replication factors of the key-spaces
using the 
&gt; &amp;gt;&amp;gt; strategies in the same way we get the replication factors
for Simple and 
&gt; &amp;gt;&amp;gt; NetworkTopology. 
&gt; &amp;gt;&amp;gt; Actually LocalSarategy has no replication factor: 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; SELECT * FROM system_schema.keyspaces WHERE keyspace_name
IN ('system', 
&gt; &amp;gt;&amp;gt; 'system_schema'); 
&gt; &amp;gt;&amp;gt; keyspace_name | durable_writes | replication 
&gt; &amp;gt;&amp;gt; ---------------+----------------+---------------------------

&gt; &amp;gt;&amp;gt; ----------------------------------------- 
&gt; &amp;gt;&amp;gt; system | True | {'class': 
&gt; &amp;gt;&amp;gt; 'org.apache.cassandra.locator.LocalStrategy'} 
&gt; &amp;gt;&amp;gt; system_schema | True | {'class': 
&gt; &amp;gt;&amp;gt; 'org.apache.cassandra.locator.LocalStrategy'} 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; It's used for internal tables and not accessible to users:

&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; CREATE KEYSPACE excel WITH replication = {'class': 'LocalStrategy'};

&gt; &amp;gt;&amp;gt; ConfigurationException: Unable to use given strategy class:
LocalStrategy 
&gt; &amp;gt;&amp;gt; is reserved for internal use. 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; Best regards, Vladimir Yudovin, 
&gt; &amp;gt;&amp;gt; Winguzone - Hosted Cloud Cassandra on Azure and SoftLayer.

&gt; &amp;gt;&amp;gt; Launch your cluster in minutes. 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; ---- On Fri, 07 Oct 2016 17:06:09 -0400 Prasenjit 
&gt; &amp;gt;&amp;gt; Sarkar&amp;amp;lt;prasenjit.sarkar@datos.io&amp;amp;gt;
wrote ---- 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; Thanks Vlad and Jeremiah. 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; There were questions about support, so let me address that
in more detail. 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; If I look at the latest Cassandra python driver, the support
for 
&gt; &amp;gt;&amp;gt; LocalStrategy is very limited (code snippet shown below)
and the support 
&gt; &amp;gt;&amp;gt; for EverywhereStrategy is non-existent. By limited I mean
that the 
&gt; &amp;gt;&amp;gt; Cassandra python driver only provides the name of the strategy
for 
&gt; &amp;gt;&amp;gt; LocalStrategy and not much else. 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; What I would like (and happy to help) is for the Cassandra
python driver to 
&gt; &amp;gt;&amp;gt; provide support for Local and Everywhere to the same extent
it is provided 
&gt; &amp;gt;&amp;gt; for Simple and NetworkTopology. I understand that token
aware routing is 
&gt; &amp;gt;&amp;gt; not applicable to either strategy but I would like to get
the replication 
&gt; &amp;gt;&amp;gt; factors of the key-spaces using the strategies in the same
way we get the 
&gt; &amp;gt;&amp;gt; replication factors for Simple and NetworkTopology. 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; Hope this helps, 
&gt; &amp;gt;&amp;gt; Prasenjit 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; class LocalStrategy(ReplicationStrategy): 
&gt; &amp;gt;&amp;gt; def __init__(self, options_map): 
&gt; &amp;gt;&amp;gt; pass 
&gt; &amp;gt;&amp;gt; def make_token_replica_map(self, token_to_host_owner, ring):

&gt; &amp;gt;&amp;gt; return {} 
&gt; &amp;gt;&amp;gt; def export_for_schema(self): 
&gt; &amp;gt;&amp;gt; """ 
&gt; &amp;gt;&amp;gt; Returns a string version of these replication options which
are 
&gt; &amp;gt;&amp;gt; suitable for use in a CREATE KEYSPACE statement. 
&gt; &amp;gt;&amp;gt; """ 
&gt; &amp;gt;&amp;gt; return "{'class': 'LocalStrategy'}" 
&gt; &amp;gt;&amp;gt; def __eq__(self, other): 
&gt; &amp;gt;&amp;gt; return isinstance(other, LocalStrategy) 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; On Fri, Oct 7, 2016 at 11:56 AM, Jeremiah D Jordan &amp;amp;lt;

&gt; &amp;gt;&amp;gt; jeremiah.jordan@gmail.com&amp;amp;gt; wrote: 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; What kind of support are you thinking of?
All drivers should support 
&gt; &amp;gt;&amp;gt; them 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; already, drivers shouldn’t care about
replication strategy except when 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; trying to do token aware routing. 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; But since anyone can make a custom replication
strategy, drivers that 
&gt; &amp;gt;&amp;gt; do 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; token aware routing just need to handle
falling back to not doing 
&gt; &amp;gt;&amp;gt; token 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; aware routing if a replication strategy
they don’t know about is in 
&gt; &amp;gt;&amp;gt; use. 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; All the open sources drivers I know of
do this, so they should all 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; “support” those strategies already.

&gt; &amp;gt;&amp;gt; &amp;amp;gt; 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; -Jeremiah 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; On Oct 7, 2016, at 1:02
PM, Prasenjit Sarkar &amp;amp; 
&gt; &amp;gt;&amp;gt; lt;prasenjit.sarkar@datos.io&amp;amp;gt; 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; wrote: 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; Hi everyone, 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; To the best of my understanding
that Datastax has proprietary 
&gt; &amp;gt;&amp;gt; replication 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; strategies: Local and
Everywhere which are not part of the open 
&gt; &amp;gt;&amp;gt; source 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; Apache Cassandra project.

&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; Do we know of any plans
in the open source Cassandra driver 
&gt; &amp;gt;&amp;gt; community to 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; support these two replication
strategies? Would Datastax have a 
&gt; &amp;gt;&amp;gt; licensing 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; concern if the open source
driver community supported these 
&gt; &amp;gt;&amp;gt; strategies? 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; I'm 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; fairly new here and would
like to understand the dynamics. 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; Thanks, 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; &amp;amp;gt; Prasenjit 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; 
&gt; &amp;gt;&amp;gt; &amp;amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; &amp;gt;&amp;gt; 
&gt; 
&gt; 
&gt; 
&gt; 
&gt; 






Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message