Orient DB 3.0.18: сжатие с именем snappy отсутствует

Пытаюсь открыть базу с помощью Orient DB 3.0.18, созданную с помощью Orient DB v2.2.37, однако выдается ошибка "Сжатие с именем snappy отсутствует". Как зарегистрировать мгновенное сжатие в Orient V3? Я пробовал org.xerial.snappy в maven POM, но без радости. Заранее спасибо.

2019-04-22 21:44:20 t.c.s.a.d.Services [DEBUG] error:stop:com.orientechnologies.orient.core.exception.OSecurityException: Compression with name 'snappy' is absent
com.orientechnologies.orient.core.exception.OSecurityException: Compression with name 'snappy' is absent
    at com.orientechnologies.orient.core.compression.OCompressionFactory.getCompression(OCompressionFactory.java:79)
    at com.orientechnologies.orient.core.storage.cluster.v0.OPaginatedClusterV0.init(OPaginatedClusterV0.java:1547)
    at com.orientechnologies.orient.core.storage.cluster.v0.OPaginatedClusterV0.configure(OPaginatedClusterV0.java:154)
    at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.createClusterFromConfig(OAbstractPaginatedStorage.java:4804)
    at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.openClusters(OAbstractPaginatedStorage.java:519)
    at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.open(OAbstractPaginatedStorage.java:388)
    at com.orientechnologies.orient.core.db.OrientDBEmbedded.open(OrientDBEmbedded.java:281)
    at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.open(ODatabaseDocumentTx.java:903)
    at com.orientechnologies.orient.core.db.OPartitionedDatabasePool$DatabaseDocumentTxPooled.internalOpen(OPartitionedDatabasePool.java:440)
    at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.openDatabase(OPartitionedDatabasePool.java:303)
    at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.acquire(OPartitionedDatabasePool.java:261)
    at com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.<init>(OrientBaseGraph.java:172)
    at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.<init>(OrientTransactionalGraph.java:78)
    at com.tinkerpop.blueprints.impls.orient.OrientGraph.<init>(OrientGraph.java:137)
    at com.tinkerpop.blueprints.impls.orient.OrientGraphFactory$1.getGraph(OrientGraphFactory.java:87)
    at com.tinkerpop.blueprints.impls.orient.OrientGraphFactory.getTx(OrientGraphFactory.java:224)

person jamie    schedule 22.04.2019    source источник


Ответы (2)


Решение для тех, кто использует Orient DB во встроенном режиме, выглядит следующим образом:

1) загрузите OSnappyCompression.java из репозитория Orient DB Github и включите в свой проект.

2) добавьте следующую библиотеку в свой Maven pom.xml

 <dependency>
     <groupId>org.xerial.snappy</groupId>
     <artifactId>snappy-java</artifactId>
     <version>1.1.7.3</version>
 </dependency>

3) перед запуском Orient DB зарегистрируйте метод сжатия Snappy следующим образом.

 OCompressionFactory.INSTANCE.register(new OSnappyCompression());
person jamie    schedule 02.07.2019

К сожалению, это сжатие было удалено. Вы должны преобразовать базу данных в несжатую версию.

person Andrey Lomakin    schedule 23.04.2019
comment
Андрей, это нецелесообразно, т.к. есть много баз, где применяется это сжатие и на разных рабочих станциях. Есть ли способ вернуть его обратно? Почему команда OrientDB так плохо относится к обратной совместимости? - person jamie; 23.04.2019
comment
@jamie Пожалуйста, не ставьте -1 к ответу не потому, что он неправильный, а потому, что вам не нравится результат ответа. В следующий раз я буду игнорировать ваши вопросы. - person Andrey Lomakin; 24.04.2019
comment
Мои извинения. Вы правы, что мне не нравится ответ. Я не понимаю, как команда Orient DB ожидает, что люди будут использовать их базу данных, когда каждый раз, когда выходит основной выпуск, нарушается совместимость. - person jamie; 25.04.2019