問題タブ [titan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database-design - グラフ データベースでインデックス ノードまたはインデックス付きプロパティが優れているのはなぜですか?
私はグラフデータベースに取り掛かったばかりですが、「ノードタイプ」などを追跡するために「インデックスノード」と「インデックス付きプロパティ」のどちらを使用するかを決定する際に問題が発生し続けているようです。これまで実際の経験がないため、決定の根拠となる情報がなく、両方のアプローチが等しく有効であるように思われます.
問題は、2 つのアプローチのトレードオフとは何か、そしてスケール (つまりノード数) が決定にどのように影響するかということです。
サンプル シナリオでは、 と の 2 種類の「もの」があると仮定します。User
ユーザーProduct
ノードと製品ノードの間のエッジはそれほど重要ではありませんが、重要なのは、各ノードtype: User
のtype: Product
プロパティが必要かどうかです。 、または各ノードに、それぞれUser
ノードとノードを指すエッジを持たせたい場合Product
。
どの状況でどのアプローチが優れているか?
注: 私は特に Neo4j と Titan を検討していますが、これはより一般的にも当てはまる傾向があると思います。
groovy - Titanの「スーパーノード」
グラフデータベース( Titan )でうまく機能するアプリケーションを開発していますが、多くのエッジを持つ頂点、つまりスーパーノードに問題があります。
上記のスーパーノードのリンクは、Titanの作成者からのブログ投稿を指しており、問題を解決する方法を説明しています。解決策は、エッジでフィルタリングすることによって頂点の数を減らすことのようです。
残念ながらgroupCount
、エッジまたは頂点の属性が必要です。たとえば、私には100万人のユーザーがいて、各ユーザーは1つの国に属しています。どうすればgroupCount
各国のユーザー数をすばやく計算できますか?
私がこれまでに試したことは、この手の込んだGroovyスクリプトで示すことができます。
基本的に1つのルートノード(Titanが「すべての」ノードルックアップを持たないため)person
、プロパティを持つ多くのビアエッジにリンクされていcountry
ます。100万個の頂点でgroupCount()を実行すると、1分以上かかります。
Titanはおそらく各エッジを反復処理してカウントを収集していると思いますが、Titanやその他のグラフデータベースでこれをより高速に実行する方法はありますか?インデックス自体をカウントして、トラバースする必要がないようにすることはできますか?私のインデックスは正しいですか?
cassandra - Cassandra ベースのグラフ データベース
春のWebプロジェクトでcassandraとグラフデータベースを使用する予定です。グーグルで調べた後、オープンソースのグラフデータベースを見つけました。実際、cassandra を適切にサポートするオープンソースのグラフ データベースを探していたので、titan グラフ データベースを見つけました。良さそうに見えますが、新しいものであり、膨大なデータと読み取り/書き込み操作を行う実際のアプリケーションでどれだけ効率的かはわかりません。
だから私はそれを知りたいです
1. Cassandraがサポートするグラフデータベースは他にありますか?
2. titan は、膨大なデータと読み取り/書き込み操作を伴う実際の Web アプリケーションに十分対応できますか?
graph - 球根/グレムリン/タイタンのキーインデックス
Neo4JアプリケーションをTitanに移植しようとしていますが、インデックスに関連する問題がいくつかあります。Titanは頂点インデックスまたはエッジインデックスをサポートしておらず、「キー」インデックスのみをサポートしていることを理解しています。
たとえば、Bulbsモデルも使用しています。
Person(facebook_id = '111')を追加すると、次を使用して取得できるはずです。
それは機能せず、使用する前にキーインデックスを作成する必要があることを教えてくれます。そこで、キースペースを削除して、rexsterdoghouseに手動でインデックスを作成しました。
その後、BulbsでPerson(facebook_id = '111')を作成し、rexsterdoghouseで取得しようとしました。
そして、空の応答を得ました。Titan頂点IDを使用してフェッチする場合は機能しますが、「facebook_id」が空になり、「。map()」が機能しません。
PS
- これは、キースペースを削除した後に作成した最初の頂点です。
- キーインデックスを自動的に作成することは可能ですか?
任意のヒント?
ありがとう!
レナート・ペディゴーニ
cassandra - TitanとCassandraのデバッグおよびプロファイリングクエリ
Cassandraバックエンドを使用する場合、CassandraクエリがTitanから実行されていること、および各クエリにかかる時間を確認することはできますか?理想的には、標準エラーまたはログファイルに出力されます。
TitanがCassandraと話している方法に非効率性が見られる場合、これはクエリの構造を最適化するのに役立つ可能性があります。
graph - TinkerPop ブループリントとフレーム - データをコレクションとして扱う方法
この質問を見つけました Tinkerpop/Blueprints グラフ API を使用して、さまざまなタイプの頂点を保存および取得する方法は?
しかし、それは私にとって明確な答えではありません。
たとえば、API の最新の 10 件の記事と、最近登録された 10 件のユーザーを照会するにはどうすればよいですか? このスタックは、コレクション/ドキュメント パラダイムとグラフ パラダイム (コレクションのこれらのタイプの要素間の関係) の両方を処理できなければならないため、グラフ作成はしばらく脇に置きます。ソースを含むすべてを読み、近づいていますが、まだ十分ではありません。
私が読んだ中で最も近いドキュメントは、こちらのマルチテナントの記事です: http://architects.dzone.com/articles/multitenant-graph-applications
しかし、グラフの分離とクエリにgremlinを使用することに焦点を当てていますが、グラフの分析が必要になるまでは避けたいと思っています。
この時点で、グラフ ID を参照して cassandr/hadoop を使用することを検討していますが、これは後で私を悩ませていることがわかります。
hbase - Titan Graph DB 頂点のデータ型を定義する方法は?
Titan と Blueprint API を使用してグラフ データ テーブルを作成しています。HBase をバックエンドとして使用しています。キー インデックスのデータ型を定義する方法を知っています。
例:
ここで、実際に Titan DB グラフで RDBMS テーブルを表現したいと考えています。Titan グラフ モデルで「列データ型」(RDBMS テーブルのように) を実装できるプロセスはありますか?
clojure - clojure titanium - berkely DBに保存するには?
以下のように、(berkely DB バックエンドを使用して) チタン グラフを読み込んで追加できます。
その後、使用できます
グラフを変更します。しかし、変更したグラフをberkleydbバックエンドに保存するにはどうすればよいですか?
titan のプロパティ ファイルがなく、[clojurewerkz/titanium "1.0.0-alpha1"] を使用しています。
configure - Thinkaurelius Titan の構成 BerkeleyDB
以下を使用して Thinkaurelius titan データストアを作成しようとしています。
ドキュメントはhttps://github.com/thinkaurelius/titan/wiki/Using-BerkeleyDB にありますが、グラフを開くたびに新しいデータストアが作成されています。configure オブジェクトを使用してみましたが、役に立ちませんでした。以前にこれに取り組んだ人はいますか?再利用可能な Titan データストアを作成したい、つまり、開くたびに新しいデータストアを作成しないようにしたい。
何か提案はありますか?
mongodb - neo4jのgremlinシェルから定義されていないGMongoインスタンス
グラフデータベースを作成するために、neo4jのGremlinシェルからmongodbデータベースのデータを読み込もうとしています。詳細はgremlin-mongodbで説明されています。開始するには、 GMongoからGMongo jarファイルをダウンロードし、Neo4jWeb管理コンソールのGremlinシェルで次のコードを実行しました。
importコマンドは機能し、パッケージをインポートしますが、2行目が失敗し、メッセージが未定義です。次のパッケージもインポートしようとしましたが、それも機能しませんでした。
問題が何であるかについて何か考えはありますか?