@@ -23,7 +23,24 @@ def are_equals(o1, o2, **kwargs):
23
23
return False
24
24
25
25
26
- def enable_sharding (arctic , library_name , hashed = True ):
26
+ def enable_sharding (arctic , library_name , hashed = True , key = 'symbol' ):
27
+ """
28
+ Enable sharding on a library
29
+
30
+ Parameters:
31
+ -----------
32
+ arctic: `arctic.Arctic` Arctic class
33
+
34
+ library_name: `basestring` library name
35
+
36
+ hashed: `bool` if True, use hashed sharding, if False, use range sharding
37
+ See https://docs.mongodb.com/manual/core/hashed-sharding/,
38
+ as well as https://docs.mongodb.com/manual/core/ranged-sharding/ for details.
39
+
40
+ key: `basestring` key to be used for sharding. Defaults to 'symbol', applicable to
41
+ all of Arctic's built-in stores except for BSONStore, which typically uses '_id'.
42
+ See https://docs.mongodb.com/manual/core/sharding-shard-key/ for details.
43
+ """
27
44
c = arctic ._conn
28
45
lib = arctic [library_name ]._arctic_lib
29
46
dbname = lib ._db .name
@@ -34,8 +51,8 @@ def enable_sharding(arctic, library_name, hashed=True):
34
51
if not 'already enabled' in str (e ):
35
52
raise
36
53
if not hashed :
37
- logger .info ("Range sharding 'symbol ' on: " + dbname + '.' + library_name )
38
- c .admin .command ('shardCollection' , dbname + '.' + library_name , key = {'symbol' : 1 })
54
+ logger .info ("Range sharding '" + key + " ' on: " + dbname + '.' + library_name )
55
+ c .admin .command ('shardCollection' , dbname + '.' + library_name , key = {key : 1 })
39
56
else :
40
- logger .info ("Hash sharding 'symbol ' on: " + dbname + '.' + library_name )
41
- c .admin .command ('shardCollection' , dbname + '.' + library_name , key = {'symbol' : 'hashed' })
57
+ logger .info ("Hash sharding '" + key + " ' on: " + dbname + '.' + library_name )
58
+ c .admin .command ('shardCollection' , dbname + '.' + library_name , key = {key : 'hashed' })
0 commit comments