Using the Node level package I imported a list of 3 billion records consisting of reverse email address and a short string value, e.g. key: com.gmail@user:applies value: harvard. While importing the data was pretty quick, querying the data is extremely slow. Each key is unique but keys may be similar, e.g.:
Querying a specific key on my 8 processor / 32Gb ram box takes around 7 minutes. How can I improve get or ReadStream requests to make them return a non-cached response in under 20 seconds? I use the code below to query leveldb:
const level = require('level');
const db = level('db');
db.createReadStream({gte: com.gmail@user, lt: com.gmail@usera, limit: 10})
.on('data', function (data) {
var school = data.key.split(':');
var e2 = school[0].split('@');
var dom2 = e2[0].split('.');
dom2.reverse();
var femail = e2[1] + "@" + dom2.join(".") ;
var dval = decodeURIComponent(data.value);
txt = txt + femail +',' + dval +',' + school[1]+"<br>";
res = femail +',' + decodeURIComponent(data.value);
})
.on('error', function (err) {
console.log('Oh my!', err)
})
.on('end', function () {
console.log(txt)
})
}