Hi Prasenjit,
I would like to get the replication factors of the key-spaces using the
strategies in the same way we get the replication factors for Simple and
NetworkTopology.
Actually LocalSarategy has no replication factor:
SELECT * FROM system_schema.keyspaces WHERE keyspace_name IN ('system',
'system_schema');
keyspace_name | durable_writes | replication
---------------+----------------+--------------------------------------------------------------------
system | True | {'class':
'org.apache.cassandra.locator.LocalStrategy'}
system_schema | True | {'class':
'org.apache.cassandra.locator.LocalStrategy'}
It's used for internal tables and not accessible to users:
CREATE KEYSPACE excel WITH replication = {'class': 'LocalStrategy'};
ConfigurationException: Unable to use given strategy class: LocalStrategy is
reserved for internal use.
Best regards, Vladimir Yudovin,
Winguzone - Hosted Cloud Cassandra on Azure and SoftLayer.
Launch your cluster in minutes.
---- On Fri, 07 Oct 2016 17:06:09 -0400 Prasenjit
Sarkar<[email protected]> wrote ----
Thanks Vlad and Jeremiah.
There were questions about support, so let me address that in more detail.
If I look at the latest Cassandra python driver, the support for
LocalStrategy is very limited (code snippet shown below) and the support
for EverywhereStrategy is non-existent. By limited I mean that the
Cassandra python driver only provides the name of the strategy for
LocalStrategy and not much else.
What I would like (and happy to help) is for the Cassandra python driver to
provide support for Local and Everywhere to the same extent it is provided
for Simple and NetworkTopology. I understand that token aware routing is
not applicable to either strategy but I would like to get the replication
factors of the key-spaces using the strategies in the same way we get the
replication factors for Simple and NetworkTopology.
Hope this helps,
Prasenjit
class LocalStrategy(ReplicationStrategy):
def __init__(self, options_map):
pass
def make_token_replica_map(self, token_to_host_owner, ring):
return {}
def export_for_schema(self):
"""
Returns a string version of these replication options which are
suitable for use in a CREATE KEYSPACE statement.
"""
return "{'class': 'LocalStrategy'}"
def __eq__(self, other):
return isinstance(other, LocalStrategy)
On Fri, Oct 7, 2016 at 11:56 AM, Jeremiah D Jordan <
[email protected]> wrote:
> What kind of support are you thinking of? All drivers should support them
> already, drivers shouldn’t care about replication strategy except when
> trying to do token aware routing.
> But since anyone can make a custom replication strategy, drivers that do
> token aware routing just need to handle falling back to not doing token
> aware routing if a replication strategy they don’t know about is in use.
> All the open sources drivers I know of do this, so they should all
> “support” those strategies already.
>
> -Jeremiah
>
> > On Oct 7, 2016, at 1:02 PM, Prasenjit Sarkar
<[email protected]>
> wrote:
> >
> > Hi everyone,
> >
> > To the best of my understanding that Datastax has proprietary
replication
> > strategies: Local and Everywhere which are not part of the open
source
> > Apache Cassandra project.
> >
> > Do we know of any plans in the open source Cassandra driver community
to
> > support these two replication strategies? Would Datastax have a
licensing
> > concern if the open source driver community supported these
strategies?
> I'm
> > fairly new here and would like to understand the dynamics.
> >
> > Thanks,
> > Prasenjit
>
>