Как изменить согласованность чтения Janusgraph Client?

Я новичок в Janusgraph и использую Cassandra в качестве серверной базы данных. У меня есть запрос, который использует поиск всех входящих ребер в узел. Для этого мне нужно сделать согласованность чтения ОДНОЙ в конфигурации 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 in QUORUM.

Вот журналы:

16:40:54.799 [основная] ОТЛАДКА ojdcassandra.CassandraTransaction — создана CassandraTransaction@25e2a451[read=QUORUM,write=QUORUM] 16:40:54.800 [основная] ОТЛАДКА ojdcassandra.CassandraTransaction — создана CassandraTransaction@1698ee84[читать=QUORUM, write=QUORUM] Все ребра = 100000 16:40:55.754 [main] DEBUG ojgdatabase.StandardJanusGraph - Завершение работы графа 40:55.755 [основная] ОТЛАДКА ojdcassandra.CassandraTransaction — создана CassandraTransaction@3e5499cc[read=QUORUM,write=QUORUM] 16:40:55.755 [основная] ОТЛАДКА 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= КВОРУМ,записать=КВОРУМ] 1 6:40:56.909 [main] INFO o.j.d.c.t.CassandraThriftStoreManager — закрытый пул подключений Thrift.

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


person KayV    schedule 26.02.2020    source источник


Ответы (1)


Во-первых, я бы переключился на подключение через 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).

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

log.tx.key-consistent=true

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

person Aaron    schedule 26.02.2020