Почему моя вставка Docker Orientdb в 14 раз медленнее, чем вставка Arango db?
Я делаю простую попытку с изображением Orient v3.0.22 Docker и изображением Arango.
Мой Docker настроен на работу с 4 процессорами и 16 ГБ оперативной памяти.
Я написал более простой загрузчик вершин для Orient для загрузки 100K записей с использованием драйвера Java API.
OrientDBConfig conf = OrientDBConfig.defaultConfig()
OrientDB odb = new OrientDB("remote:localhost", "admin", "admin", conf)
//open (name, user pwd)
ODatabaseSession sess = odb.open ("temp", "admin", "admin")
def v
String ref
println "insert bulk records"
def start = System.nanoTime()
def vArr = []
//write 10k records
for (int i=1; i<100001;i++) {
v = sess.newVertex ()
ref = "object#[${-> i}]"
v.setProperty("name", ref)
v.setProperty ("id", 1)
vArr << v
}
println vArr.size() + " verticies to insert"
sess.declareIntent(new OIntentMassiveInsert())
vArr.each {it.save()}
sess.declareIntent(null)
def end = System.nanoTime()
def duration = (end - start)
def period = TimeUnit.MILLISECONDS.convert(duration, TimeUnit.NANOSECONDS)/1000
println "100K records done in duration " + period + " seconds"
sess.close()
Для Arango я использую оболочку springdata для Arango и создал бегун командной строки, используя подход springdata следующим образом:
public void run(final String... args) throws Exception {
// first drop the database so that we can run this multiple times with the same dataset
operations.dropDatabase()
def v
String ref
def org
println "insert bulk records"
def start = System.nanoTime()
def vArr = []
//write 100k records
for (int i=1; i<100001;i++) {
ref = "object#[${-> i}]"
org = new Organisation (name: "Object#[$ref]", inaugurated:2000)
vArr << org
}
println vArr.size() + " verticies to insert in arangodb"
repository.saveAll (vArr)
def end = System.nanoTime()
def duration = (end - start)
def period = TimeUnit.MILLISECONDS.convert(duration, TimeUnit.NANOSECONDS)/1000
println "Arango 100K records done in duration " + period + " seconds"
}
Запуск клиента Orientdb занимает 57 секунд на моем рабочем столе Docker.
Запуск клиента Arango занимает 3,71 секунды с моего докера Arango db.
Я не понимаю принципиальной разницы в скорости!
Это не должно быть ориентиром - просто индикатор. Но должно быть что-то, чего мне не хватает. Аранго делает основную вставку в 14 раз быстрее, чем версия Orientdb.
Мне нравится новая унифицированная модель Orientdb, но она намного медленнее.
Мне очень нравится весенний подход к данным для Arango, но он основан на подходе модели документа, а не на графике - мне было бы интересно посмотреть, есть ли у кого-нибудь сопоставимые проблемы / наблюдения и как настроить образ Orient Docker для "оптимальной" производительности.
А пока я собираюсь попробовать пакет gremlin для Spring-data и посмотреть, смогу ли я подключиться к Orientdb, используя вместо этого tinkerpop.