MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Imposta i file piccoli in ShardingTest

Un buon modo per determinare come utilizzare un comando della shell MongoDB è digitare il comando senza parentesi nella shell e invece di eseguirlo stamperà il codice sorgente per il comando. Quindi, se corri

ShardingTest

al prompt dei comandi vedrai tutto il codice sorgente. Intorno alla riga 30 vedrai questo commento:

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

che fornisce la sintassi corretta per passare i parametri di configurazione per mongos, config e shard (che si applicano ai mongod non replicaset per tutti gli shard). Cioè, invece di specificare un numero per gli shard che passi in un oggetto. Scavando ulteriormente nel codice:

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

            numShards = tempCount;

Ciò prenderà un oggetto e utilizzerà i documenti secondari all'interno dell'oggetto come parametri di opzione per ogni shard. Questo porta, usando il tuo esempio:

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

che dall'output che posso vedere sta avviando i frammenti 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

In alternativa, dato che ora hai il codice sorgente davanti a te, puoi modificare javascript per passare in smallfile per impostazione predefinita.