2 votes

Comment modifier la cohérence de lecture du client Janusgraph ?

Je suis nouveau dans Janusgraph et j'utilise Cassandra comme base de données backend. J'ai une requête qui utilise la recherche de toutes les arêtes entrantes d'un nœud. Pour cela, j'ai besoin de rendre la cohérence de lecture à ONE dans la configuration de Janusgraph. J'ai essayé la configuration suivante mais je ne suis pas en mesure d'obtenir la cohérence de lecture correcte :

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;
}

Cependant, le client affiche toujours la transaction Cassandra au niveau de cohérence QUORUM.

Voici les journaux :

16:40:54.799 [main] DEBUG o.j.d.cassandra.CassandraTransaction - Créé CassandraTransaction@25e2a451[read=QUORUM,write=QUORUM] 16:40:54.800 [main] DEBUG o.j.d.cassandra.CassandraTransaction - Créé CassandraTransaction@1698ee84 [read=QUORUM,write=QUORUM] Tous les edges = 100000 16:40:55.754 [main] DEBUG o.j.g.database.StandardJanusGraph - Fermeture du graphe standardjanusgraph[cassandrathrift :[10.70.1.167]] using shutdown hook Thread[Thread-5,5,main] 16:40:55.755 [main] DEBUG o.j.d.cassandra.CassandraTransaction - Créé CassandraTransaction@3e5499cc[read=QUORUM,write=QUORUM] 16:40:55.755 [main] DEBUG o.j.d.cassandra.CassandraTransaction - Créé CassandraTransaction@67ab1c47 [read=QUORUM,write=QUORUM] 16:40:56.113 [main] DEBUG o.j.d.cassandra.CassandraTransaction - Créé CassandraTransaction@6821ea29 [read=QUORUM,write=QUORUM] 16:40:56.542 [main] DEBUG o.j.d.cassandra.CassandraTransaction - Créé CassandraTransaction@338494fa [read=QUORUM,write=QUORUM] 16:40:56.909 [main] INFO o.j.d.c.t.CassandraThriftStoreManager - Closed Thrift pooler de connexion.

Avez-vous des suggestions sur la manière de modifier ce niveau de cohérence en le ramenant à UN ou LOCAL ?

1voto

BryceAtNetwork23 Points 5053

Tout d'abord, j'opterais pour une connexion via CQL au lieu de Thrift. Thrift a été déprécié, de sorte qu'il ne bénéficie d'aucune amélioration pour les corrections de bogues. En d'autres termes, s'il est intrinsèquement cassé, il ne sera pas corrigé. Il est donc préférable d'utiliser 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

Deuxièmement, vous devez vous assurer que vous utilisez systématiquement les propriétés de configuration de votre backend de stockage. Malheureusement, avec JanusGraph et Cassandra, il est facile de les confondre...

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");

Dans l'exemple ci-dessus, vous avez défini des propriétés sur storage.cassandra (Thrift) et le storage.cql (CQL).

Si c'est le cas encore ne fonctionne pas, essayez d'ajouter ce paramètre également :

log.tx.key-consistent=true

Le fait de configurer le journal des transactions de manière à ce qu'il soit cohérent avec les clés remplace sa valeur par défaut. QUORUM l'accès à la cohérence, si c'est ce qui apparaît comme QUORUM .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X