sql >> Base de Datos >  >> NoSQL >> MongoDB

Establecer archivos pequeños en ShardingTest

Una buena manera de determinar cómo usar un comando de shell de MongoDB es escribir el comando sin paréntesis en el shell y, en lugar de ejecutarlo, imprimirá el código fuente del comando. Así que si ejecutas

ShardingTest

en el símbolo del sistema, verá todo el código fuente. Alrededor de la línea 30 verá este comentario:

    // Allow specifying options like :
    // { mongos : [ { noprealloc : "" } ], config : [ { smallfiles : "" } ], shards : { rs : true, d : true } }

lo que le brinda la sintaxis correcta para pasar parámetros de configuración para mongos, config y shards (que se aplican a los mongods no replicaset para todos los shards). Es decir, en lugar de especificar un número para los fragmentos, pasa un objeto. Profundizando más en el código:

else if( isObject( numShards ) ){
            tempCount = 0;
            for( var i in numShards ) {
                otherParams[ i ] = numShards[i];
                tempCount++;
            }

            numShards = tempCount;

Esto tomará un objeto y usará los subdocumentos dentro del objeto como parámetros de opción para cada fragmento. Esto lleva a, usando su ejemplo:

cluster = new ShardingTest({shards : {d0:{smallfiles:''}, d1:{smallfiles:''}, d2:{smallfiles:''}}})

que a partir de la salida que puedo ver está comenzando los fragmentos con --smallfiles:

shell: started program mongod --port 30000 --dbpath /data/db/test0 --smallfiles --setParameter enableTestCommands=1 
shell: started program mongod --port 30001 --dbpath /data/db/test1 --smallfiles --setParameter enableTestCommands=1 
shell: started program mongod --port 30002 --dbpath /data/db/test2 --smallfiles --setParameter enableTestCommands=1

Alternativamente, dado que ahora tiene el código fuente frente a usted, puede modificar el javascript para pasar archivos pequeños de forma predeterminada.