Best Practices
Here are some best practices to manage performance tradeoffs between transactions and analytics using SingleStore Kai for MongoDB.
Enable JSON key order
SingleStoreDB does not preserve the JSON key order by default. This does not impact most applications and improves performance. If your application requires key order to be preserved, you can preserve the JSON key order at both the database and collection levels.
Database level: To preserve JSON key order for a database, run the following command:
db.runCommand({setDefaultCollectionOptions:1,value:{shardKey:null,preserveJSONKeyOrder:true}}
Collection level: To preserve JSON key order for a specific collection (for example, mycollection), run the following command:
db.createCollection("mycollection",{shardKey:{a:1,b:1},preserveJSONKeyOrder:true}}
Faster Transactions (But Lower Resilience)
SingleStoreDB enables retryWrites
by default, which provides higher resilience against network errors. Disabling the retryWrites
setting will improve latency for write operations, but the application might need to manually handle errors due to transient network conditions.
"mongodb://<user>:<password>@svc-XXXX.svc.singlestore.com:27017/?retryWrites=false&authMechanism=PLAIN&tls=true&loadBalanced=true"
SingleStoreDB recommends leaving retryWrites
enabled for ingesting data.