Как изменить последовательность чтения Janusgraph Client? - PullRequest
2 голосов
/ 26 февраля 2020

Я новичок в Janusgraph и использую Cassandra в качестве базы данных. У меня есть запрос, который использует найти все входящие ребра в узел. Для этого мне нужно сделать согласованность чтения в ONE в конфигурации Janusgraph. Я попробовал следующую конфигурацию, но не смог получить правильную согласованность чтения:

public static JanusGraph create() {
    JanusGraphFactory.Builder config = JanusGraphFactory.build();
    config.set("storage.backend", "cassandrathrift");
    config.set("storage.cassandra.keyspace", "cs_graph");
    config.set("storage.cassandra.read-consistency-level","ONE");
    config.set("storage.cassandra.write-consistency-level","ONE");
    config.set("storage.cassandra.frame-size-mb", "128");
    config.set("storage.cassandra.thrift.cpool.max-wait", 360000);
    config.set("storage.hostname", "10.XXX.1.XXX");
    config.set("connectionPool.keepAliveInterval","360000");
    config.set("storage.cql.only-use-local-consistency-for-system-operations","true");

    graph = config.open();
    System.out.println("Graph = "+graph);
    traversalSource = graph.traversal();
    System.out.println("traversalSource = "+traversalSource);
    getAllEdges();
    return graph;
}

Однако клиент все еще показывает транзакцию CassandraTransaction на уровне QUORUM.

Вот журналы:

16: 40: 54.799 [main] DEBUG ojdcassandra.CassandraTransaction - создано CassandraTransaction@25e2a451 [read = QUORUM, write = QUORUM] 16:40: 54.800 [main] DEBUG ojdcassandra.CassandraTransaction - создано CassandraTransaction@1698ee84 [read = QUORUM, write = QUORUM] Все ребра = 100000 16: 40: 55.754 [main] DEBUG ojgdatabase.StandardJanusGraph - Отключение стандартного графа графика Janusgraph [cassandrathrift: . ojdcassandra.CassandraTransaction - создано CassandraTransaction@67ab1c47 [read = QUORUM, write = QUORUM] 16: 40: 56.113 [main] DEBUG ojdcassandra.CassandraTransaction - создано CassandraTransaction@6821ea29 [read = QUORUM, write = QUORUM] 16: 40: 56.542 [main ] DEBUG ojdcassandra.CassandraTransaction - создано CassandraTransaction@338494fa [read = QUORUM, write = QUORUM] 16: 40: 56.909 [main] INFO ojd c .t.CassandraThriftStoreManager - Закрытый пул соединения Thrift.

Любые предложения по ч из-за того, чтобы изменить это на ОДИН или ЛОКАЛЬНЫЙ уровень согласованности ??

1 Ответ

1 голос
/ 26 февраля 2020

С одной стороны, я бы переключился на подключение через CQL вместо Thrift. Thrift устарел, поэтому он не видит преимуществ каких-либо улучшений для исправления ошибок. Другими словами, если он по своей сути нарушен, он не будет исправлен. Таким образом, вам гораздо лучше использовать CQL.

config.set("storage.backend", "cql");
config.set("storage.cql.keyspace", "cs_graph");
storage.cql.read-consistency-level=ONE
storage.cql.write-consistency-level=ONE

Во-вторых, вам необходимо убедиться, что вы последовательно используете свойства конфигурации для своей серверной части хранилища. К сожалению, с JanusGraph и Cassandra их легко перепутать ...

config.set("storage.cassandra.read-consistency-level","ONE");
config.set("storage.cassandra.write-consistency-level","ONE");
....
config.set("storage.cql.only-use-local-consistency-for-system-operations","true");

В приведенном выше примере вы установили свойства для storage.cassandra (Thrift) и storage.cql (CQL) configs.

Если это все еще не работает, попробуйте добавить также этот параметр:

log.tx.key-consistent=true

Настройка журнала транзакций на согласованность ключей переопределяет его по умолчанию QUORUM доступ к согласованию, если это то, что отображается как QUORUM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...