KonfigureraMongoDb - bjoben/axel GitHub Wiki

Konfigurera Mongo databasen

Replica Sets

Mongo databasen rekommenderas att

Databas struktur

Axel skapar ett antal collections i Mongo databasen. Se beskrivning för ShsImplementationsVy#Databaser Axel databasen.

Kopplingen mellan applikation och Mongo databasen

För beskrivningen av konfiguration av koppling mellan Axel applikationen och Mongo databasen se AxelKonfiguration#se.inera.axel.mongodb.cfg här.

Indexer

Mongo databasen måste prepareras med

  • indexer i collection !ShsMessageEntry

Index initialiseringsskript ligger här:

Den skapar följande indexer:

> db.shsMessageEntry.stats(1024 * 1024)
{
        "ns" : "axel.shsMessageEntry",
        "count" : 137864,
        "size" : 190,
        "avgObjSize" : 0.0013781697905181918,
        "storageSize" : 270,
        "numExtents" : 11,
        "nindexes" : 21,
        "lastExtentSize" : 78,
        "paddingFactor" : 1.3700000000107366,
        "systemFlags" : 0,
        "userFlags" : 0,
        "totalIndexSize" : 170,
        "indexSizes" : {
                "_id_" : 10,
                "label.txId_1" : 7,
                "label.corrId_1" : 7,
                "state_1_stateTimeStamp_1" : 4,
                "label.to.value_1_label.transferType_1_state_1_stateTimeStamp_1" : 8,
                "label.to.value_1_label.transferType_1_state_1_label.product.value_1_stateTimeStamp_1" : 13,
                "label.to.value_1_label.transferType_1_state_1_acknowledged_1_stateTimeStamp_1" : 8,
                "label.to.value_1_label.transferType_1_state_1_label.status_1_stateTimeStamp_1" : 9,
                "label.to.value_1_label.transferType_1_state_1_label.endRecipient.value_1_stateTimeStamp_1" : 8,
                "label.to.value_1_label.transferType_1_state_1_label.originatorOrFrom.value_1_stateTimeStamp_1" : 10,
                "label.to.value_1_label.transferType_1_state_1_label.corrId_1_stateTimeStamp_1" : 13,
                "label.to.value_1_label.transferType_1_state_1_label.content.contentId_1_stateTimeStamp_1" : 13,
                "label.to.value_1_label.transferType_1_state_1_label.meta.name_1_stateTimeStamp_1" : 8,
                "label.to.value_1_label.transferType_1_state_1_label.meta.value_1_stateTimeStamp_1" : 8,
                "label.to.value_1_label.transferType_1_state_1_label.product.value_1_acknowledged_1_stateTimeStamp_1" : 13,
                "label.to.value_1" : 4,
                "label.originatorOrFrom.value_1" : 4,
                "label.content.dataOrCompound.filename_1" : 4,
                "label.product.value_1" : 6,
                "acknowledged_1" : 2,
                "state_1" : 3
        },
        "ok" : 1
}

Dimensionering av connection pool

Det finns framförallt två URI parametrar som styr hur många samtidiga kopplingar till Mongo databasen är möjlig.

  • maxPoolSize: default värde är 10 pga. motsvarande Java driver parameter connectionsPerHost i klassen !MongoOptions
  • waitQueueMultiple: default värde är 5 pga. motsvarande Java driver parameter threadsAllowedToBlockForConnectionMultiplier i klassen !MongoOptions

Därmed kan maximalt 50 trådar samtidigt försöka komma åt databasen.

Dessutom finns parametern waitQueueTimeoutMS som anger hur länge en tråd ska maximalt vänta på en koppling till databasen.

För URI parameter dokumentation se [http://docs.mongodb.org/manual/reference/connection-string/ här](http://docs.mongodb.org/manual/reference/connection-string/ här). För Mongo Java driver dokumentation se [http://api.mongodb.org/java/current/ här](http://api.mongodb.org/java/current/ här).

Om kopplingar till Mongo databasen blir en flaskhals i applikationen så kan detta justeras med hjälp av ovannämnde URI parametrarna som sätts i konfigurationsfilen [http://code.google.com/p/inera-axel/wiki/AxelKonfiguration#se.inera.axel.mongodb.cfg se.inera.axel.mongodb.cfg](http://code.google.com/p/inera-axel/wiki/AxelKonfiguration#se.inera.axel.mongodb.cfg se.inera.axel.mongodb.cfg).