KonfigureraMongoDb - bjoben/axel GitHub Wiki
Konfigurera Mongo databasen
Replica Sets
Mongo databasen rekommenderas att
- sätta upp som [http://docs.mongodb.org/manual/replication/ replica sets](http://docs.mongodb.org/manual/replication/ replica sets) i produktionsmiljö.
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).