Skip to content

Commit 3be213a

Browse files
committed
Use faster bulk insert interface
1 parent 030dd9f commit 3be213a

4 files changed

Lines changed: 25 additions & 50 deletions

File tree

indradb/__init__.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
from indradb.models import Vertex, EdgeKey, Edge, VertexProperty, \
33
EdgeProperty, RangeVertexQuery, SpecificVertexQuery, PipeVertexQuery, \
44
SpecificEdgeQuery, PipeEdgeQuery, BulkInsertVertex, BulkInsertEdge, \
5-
BulkInsertVertexProperty, BulkInsertEdgeProperty, VertexProperties, \
6-
EdgeProperties, Property
5+
VertexProperties, EdgeProperties, Property
76
from indradb.transaction import Transaction
87

98
__all__ = [
@@ -20,8 +19,6 @@
2019
"PipeEdgeQuery",
2120
"BulkInsertVertex",
2221
"BulkInsertEdge",
23-
"BulkInsertVertexProperty",
24-
"BulkInsertEdgeProperty",
2522
"VertexProperties",
2623
"EdgeProperties",
2724
"Property",

indradb/indradb.capnp

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@0xa24c698a359c7c15;
1+
@0x8c6320575f4b9483;
22

33
using Timestamp = UInt64;
44
using Uuid = Data;
@@ -100,19 +100,11 @@ struct BulkInsertItem {
100100
union {
101101
vertex :group {
102102
vertex @0 :Vertex;
103+
props @1 :List(Property);
103104
}
104105
edge :group {
105-
key @1 :EdgeKey;
106-
}
107-
vertexProperty :group {
108-
id @2 :Uuid;
109-
name @3 :Text;
110-
value @4 :Json;
111-
}
112-
edgeProperty :group {
113-
key @5 :EdgeKey;
114-
name @6 :Text;
115-
value @7 :Json;
106+
key @2 :EdgeKey;
107+
props @3 :List(Property);
116108
}
117109
}
118110
}

indradb/models.py

Lines changed: 19 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -361,59 +361,39 @@ def to_message(self):
361361
return message
362362

363363
class BulkInsertVertex(_BaseModel):
364-
__slots__ = ["vertex"]
364+
__slots__ = ["vertex", "props"]
365365

366366
def __init__(self, vertex):
367367
self.vertex = vertex
368+
self.props = props
368369

369370
def to_message(self):
370371
message = indradb_capnp.BulkInsertItem.new_message()
371372
container = message.init("vertex")
372373
container.vertex = self.vertex.to_message()
374+
375+
props = message.init("props", len(self.props))
376+
for i, prop in enumerate(self.props):
377+
props[i] = prop.to_message()
378+
373379
return message
374380

375381
class BulkInsertEdge(_BaseModel):
376-
__slots__ = ["key"]
382+
__slots__ = ["key", "props"]
377383

378384
def __init__(self, key):
379385
self.key = key
386+
self.props = props
380387

381388
def to_message(self):
382389
message = indradb_capnp.BulkInsertItem.new_message()
383390
container = message.init("edge")
384391
container.key = self.key.to_message()
385-
return message
386-
387-
class BulkInsertVertexProperty(_BaseModel):
388-
__slots__ = ["id", "name", "value"]
389392

390-
def __init__(self, id, name, value):
391-
self.id = id
392-
self.name = name
393-
self.value = value
394-
395-
def to_message(self):
396-
message = indradb_capnp.BulkInsertItem.new_message()
397-
container = message.init("vertexProperty")
398-
container.id = self.id.bytes
399-
container.name = self.name
400-
container.value = json.dumps(self.value)
401-
return message
402-
403-
class BulkInsertEdgeProperty(_BaseModel):
404-
__slots__ = ["key", "name", "value"]
405-
406-
def __init__(self, key, name, value):
407-
self.key = key
408-
self.name = name
409-
self.value = value
410-
411-
def to_message(self):
412-
message = indradb_capnp.BulkInsertItem.new_message()
413-
container = message.init("edgeProperty")
414-
container.key = self.key.to_message()
415-
container.name = self.name
416-
container.value = json.dumps(self.value)
393+
props = message.init("props", len(self.props))
394+
for i, prop in enumerate(self.props):
395+
props[i] = prop.to_message()
396+
417397
return message
418398

419399
class Property(_BaseModel):
@@ -433,6 +413,12 @@ def __init__(self, name, value):
433413
self.name = name
434414
self.value = value
435415

416+
def to_message(self):
417+
message = indradb_capnp.Property.new_message()
418+
message.name = self.name
419+
message.value = json.dumps(self.value)
420+
return message
421+
436422
@classmethod
437423
def from_message(cls, message):
438424
return cls(

0 commit comments

Comments
 (0)