Почему моя вставка 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.

0 ответов

Другие вопросы по тегам