100万件を超えるレコードのMySQLデータベースをグラフデータベースに変換したいのですが、それはネットワーク型のデータが強くリンクされているためです。無料版の Neo4J には、衝突する可能性があると思われるいくつかの制限があったため、OrientDB (Community 2.2.0) (Ubuntu Server 16.04 上) をインストールして動作させました。今は Python (3.5.1+) からアクセスする必要があるので、pyorient (1.5.2) を試しています。(最終的には Gremlin を使用したいので、TinkerPop を試しましたが、gremlin コンソールが OrientDB と通信できませんでした。)
次の単純な Python コードは、OrientDB のテスト グラフの 1 つに接続します。
import pyorient
username="user"
password="password"
client = pyorient.OrientDB("localhost", 2424)
session_id = client.connect( username, password )
print("SessionID=",session_id)
db_name="GratefulDeadConcerts"
if client.db_exists( db_name, pyorient.STORAGE_TYPE_MEMORY ):
print("Database",db_name,"exists")
client.db_open( db_name, username, password )
else:
print("Database",db_name,"doesn't exist")
奇妙なエラーが発生します:
SessionID= 27
Database GratefulDeadConcerts exists
Traceback (most recent call last):
File "FirstTest.py", line 18, in <module>
client.db_open( db_name, username, password )
File "/home/tom/MyProgs/TestingPyOrient/env/lib/python3.5/site-packages/pyorient/orient.py", line 379, in db_open
.prepare((db_name, user, password, db_type, client_id)).send().fetch_response()
File "/home/tom/MyProgs/TestingPyOrient/env/lib/python3.5/site-packages/pyorient/messages/database.py", line 141, in fetch_response
info = OrientVersion(release)
File "/home/tom/MyProgs/TestingPyOrient/env/lib/python3.5/site-packages/pyorient/otypes.py", line 202, in __init__
self._parse_version(release)
File "/home/tom/MyProgs/TestingPyOrient/env/lib/python3.5/site-packages/pyorient/otypes.py", line 235, in _parse_version
self.build = int( self.build )
ValueError: invalid literal for int() with base 10: '0 (build develop@r79d281140b01c0bc3b566a46a64f1573cb359783; 2016'
それが何であるか、またはどのように修正できるかを誰かが知っていますか? 代わりに本当に TinkerPop を使用する必要がありますか? もしそうなら、私はそれとの闘いについて別の質問を投稿します.