mirror of
https://github.com/arnaucube/arbo.git
synced 2026-01-17 10:41:28 +01:00
Implement addBatchInDisk for big trees
Implement addBatchInDisk for big trees, which does not puts the tree in memory, and works directly over the db data, parallelizing for each CPU.
This commit is contained in:
6
vt.go
6
vt.go
@@ -37,7 +37,7 @@ type kv struct {
|
||||
v []byte
|
||||
}
|
||||
|
||||
func (p *params) keysValuesToKvs(ks, vs [][]byte) ([]kv, []Invalid, error) {
|
||||
func keysValuesToKvs(maxLevels int, ks, vs [][]byte) ([]kv, []Invalid, error) {
|
||||
if len(ks) != len(vs) {
|
||||
return nil, nil, fmt.Errorf("len(keys)!=len(values) (%d!=%d)",
|
||||
len(ks), len(vs))
|
||||
@@ -45,7 +45,7 @@ func (p *params) keysValuesToKvs(ks, vs [][]byte) ([]kv, []Invalid, error) {
|
||||
var invalids []Invalid
|
||||
var kvs []kv
|
||||
for i := 0; i < len(ks); i++ {
|
||||
keyPath, err := keyPathFromKey(p.maxLevels, ks[i])
|
||||
keyPath, err := keyPathFromKey(maxLevels, ks[i])
|
||||
if err != nil {
|
||||
invalids = append(invalids, Invalid{i, err})
|
||||
continue
|
||||
@@ -101,7 +101,7 @@ func (t *vt) addBatch(ks, vs [][]byte) ([]Invalid, error) {
|
||||
|
||||
l := int(math.Log2(float64(nCPU)))
|
||||
|
||||
kvs, invalids, err := t.params.keysValuesToKvs(ks, vs)
|
||||
kvs, invalids, err := keysValuesToKvs(t.params.maxLevels, ks, vs)
|
||||
if err != nil {
|
||||
return invalids, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user