Thanks @kporter
hardware:
1 node Intel Xeon E3-1270v6 - 32GB DDR4 ECC 2400 hd 500gb nvme intel
The server don’t have work load actually, so the only work are this write operations
I’m running from command line, like a CLI script
'use strict'
const mysql = require('mysql')
const mysqlconn = mysql.createConnection({
host: '-',
user: '-',
password: '-',
database: '-'
})
// writePolicy.sendKey = true
//https://www.aerospike.com/apidocs/nodejs/module-aerospike_maps.html
const Aerospike = require('aerospike')
const op = Aerospike.operations
const maps = Aerospike.maps
const predexp = Aerospike.predexp
let offset = process.argv[3]
let inicial = process.argv[2]
let d = new Date();
const bloquesize = 1000
const defaultNamespace = 'dmp'
const defaultSet = 'europe'
const ts = d.getFullYear() + ((d.getMonth() < 9) ? '0' : '') + (d.getMonth() + 1) + ((d.getDate() < 10) ? '0' : '') + d.getDate()
const defaults = {
socketTimeout: 0,
totalTimeout: 0,
maxRetries: 3,
key: Aerospike.policy.key.SEND,
exists: Aerospike.policy.exists.CREATE_OR_REPLACE
}
const config = {
hosts: '-',
modlua: {
systemPath: '/opt/aerospike/udf/sys/',
userPath: '/codigo/udf'
},
maxConnsPerNode: 1024,
policies: {
write: new Aerospike.WritePolicy(defaults)
}
}
function assertOk(error, message) {
if (error) {
console.error('ERROR - %s: %s [%s]\n%s', message, error.message, error.code, error.stack)
throw error
}
}
function insertadmp(client, argumentos) {
return new Promise(function(resolve, reject) {
const key = new Aerospike.Key(defaultNamespace, defaultSet, argumentos.dmpID)
let points = 0;
let ops = [
op.write('lastupdated', ts),
maps.put('fuentes', 'tap', ts)
]
argumentos.segmento.split(',').forEach(function(currentValue, index, arr) {
ops.push(maps.increment('segszeo', currentValue, 1))
points++
})
ops.push(op.incr('points', points))
ops.push(maps.size('segszeo'))
let results = client.operate(key, ops, (error, record) => {
if (error) {
reject(error)
} else {
client.operate(key, [op.write('nsegmentos', record.bins.segszeo)], (error, record) => {
if (error) {
reject(error)
} else {
resolve(record)
}
})
}
})
})
}
function getLastRecord(inicial, offset) {
return new Promise(function(resolve, reject) {
mysqlconn.query('Select dmpID,segmento from aaSegs where dmpID like "' + inicial + '%" order by dmpID asc LIMIT ' + offset + ',' + bloquesize, function(err, rows, fields) {
if (err) {
return reject(err);
}
resolve(rows);
});
});
}
getLastRecord(inicial, offset).then(resultados => {
Aerospike.connect(config).then(client => {
for (var i = 0; i < resultados.length; i++) {
insertadmp(client, resultados[i]).then(function(resultado) {
console.info('inserta ok %s', resultado.key.key)
}).catch(function(error) {
console.error('err inserta')
})
}
})
})