Necesito una identificación de entero de persistencia para una operación llamada aproximadamente 100 veces por segundo. Tengo un solo documento en la colección Configuración donde la identificación se almacena en el campo lastId.
Según el documento de mongodb , quiero implementarlo usando la operación findAnyModify() con la update: { $inc: { lastId: 1 } } parámetro. ¿Puedo confiar en que cada próxima llamada devuelva un número nuevo (incrementado)?
¿O es mejor como solución usar el contador Java AtomicLong ? lastId de mongo al inicio, y en cada incremento escribiré (pero no leeré) de mongo.
Si necesita una secuencia persistente en mongodb, de hecho necesita usar el operador $inc para incrementar atómicamente en el lado del servidor un campo dado que usará como contador.
Si usa un AtomicLong , difícilmente podrá garantizar la consistencia de su secuencia (especialmente en un entorno de clúster), de modo que podría enfrentar situaciones en las que termine con la misma identificación para varios documentos.