Neo4j と OrientDB グラフ DB のパフォーマンスをテストしています。neo4j サイトで入手できる MoiveDatabase データセットを使用しています。私は指示に従いました:
export-graphml -t -o /tmp/out.graphml
CREATE DATABASE plocal:/tmp/db/test
IMPORT DATABASE /tmp/out.graphml storeVertexIds=true
ここにclasses
出力があるので、インポートはOKだったと思います。
CLASSES
----------------------+------------------------------------+------------+----------------+
NAME | SUPERCLASS | CLUSTERS | RECORDS |
----------------------+------------------------------------+------------+----------------+
ACTS_IN | [E] | 14 | 94700 |
DIRECTED | [E] | 13 | 11915 |
E | | 10 | 0 |
FRIEND | [E] | 16 | 6 |
Movie | [V] | 12 | 6379 |
OFunction | | 6 | 0 |
OIdentity | | - | 0 |
ORestricted | | - | 0 |
ORIDs | | 8 | 0 |
ORole | [OIdentity] | 4 | 3 |
OSchedule | | 7 | 0 |
OTriggered | | - | 0 |
OUser | [OIdentity] | 5 | 3 |
Person | [V] | 11 | 50013 |
RATED | [E] | 15 | 30 |
V | | 9 | 61752 |
----------------------+------------------------------------+------------+----------------+
TOTAL = 16 224801 |
----------------------+------------------------------------+------------+----------------+
しかし、このクエリを実行しようとすると、
SELECT in() FROM Movie LIMIT 10
またはSELEC out() FROM Person LIMIT 10
レコードが取得されません。何故ですか?
co-actors クエリを書き直そうとしています:
MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(:Movie)<-[:ACTED_IN]-(coActor:Person)
RETURN coActor.name
および「共同参加者」クエリ:
MATCH (tom:Person)-[:ACTED_IN]->(movie1)<-[:ACTED_IN]-(coActor:Person),
(coActor)-[:ACTED_IN]->(movie2)<-[:ACTED_IN]-(coCoActor:Person)
WHERE tom.name = "Tom Hanks" AND NOT (tom)-[:ACTED_IN]->(movie2)
RETURN coCoActor.name
これに使うべきTRAVERSE
ですか?