問題タブ [sql-graph]

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.

0 投票する
3 に答える
3649 参照

sql - SQLServerのグラフエッジの有向/無向テーブルを効率的にクエリする

各行がグラフネットワークのエッジを表すSQLサーバーテーブルがあります。FromNodeIDとToNodeIDはノードテーブルへの外部キーであり、スキーマは次のようになります。

さて、各エッジが方向付けられている(つまり、一方向)と考えると、どのノードからでも直接アクセスできるすべてのノードを簡単に見つけることができます。FromNodeID列にインデックスを追加してから、次のようなクエリを実行します。

結果:5

しかし、各エッジを単方向として扱いたい場合、テーブル/クエリを構造化するための最良の方法は何でしょうか。つまり、ノード3から始めて、結果を取得したいと思います。

結果:1、2、5

私が考えることができる最も簡単な方法は、ToNodeID列にインデックスを追加してから、次のようなクエリを実行することです。

しかし、これには明らかに2つのクエリの結果セットを組み合わせることが含まれ、あまり効率的ではないようです。これを1つのクエリで記述するためのより良い方法はありますか?(反転したエッジをテーブルに再度挿入したくないことに注意してください。実行時にエッジを有向または無向として扱うことができる必要があります)。

アドバイスありがとうございます!

0 投票する
1 に答える
1625 参照

sql - グラフの問題: SQL サーバーの NOCYCLE 以前の置換で接続しますか?

質問:

次の(有向)グラフがあります。 グラフ

そして、このテーブル:

そして、このコンテンツ:

これで、ポイント x からポイント y への最適な接続を次のようにクエリできます。

今、無向グラフを作成したいので、たとえば、D から A へのパスも取得できます。

私は最も単純な変更から始めて、HD の逆方向を広告するだけです。

さて、予想通り、私のクエリは例外をスローします:

無限再帰 / 最大再帰レベル (100) を超えました

可能な接続の数が無限になったためです。

Oracle では、ツリーの代わりに「事前に接続」を使用して同じことを行います。そして、循環問題 (無限再帰) が発生する可能性がある場合は、NOCYCLE を CONNECT BY PRIOR に追加して、「CONNECT BY NOCYCLE PRIOR」にします。

MS-SQL では、以下を追加してその動作を修正しました。

基本的に NOCYCLE をエミュレートします。

ただし、LIKE は基本的に strstr (またはより悪い strcasestr) であるため、親要素の配列をチェックするよりも非常に遅く、パフォーマンスが非常に心配です。

あくまでもこれは一例であり、基本的には全国のデータを追加するつもりです。したがって、最終結果は非常に遅くなる可能性があります。

他の誰かが MS SQL で NOCYCLE を置き換える方法のより良い (= より速い) 方法を持っていますか?

それとも、これは、Oracleに切り替える以外に選択肢がないポイントですか(これを許容できる速度で実行するため)?

注: 一時テーブル (大量のデータ) ソリューションは、十分な RAM がない場合 (絶対確実) に一時テーブルがハードディスクにスワップされるため、遅くなります。

関数とテーブル値関数を使用するソリューションについても同様です。

0 投票する
1 に答える
667 参照

algorithm - SQL Server/AzureまたはGraphDBを使用したモデルのようなTwitter

SQLサーバーを使用してDBのようなTwitterを設計することは可能ですか?高いスケーラビリティと高速クエリを保証するDB。

Twitter(User、Follower、Tweet)のような同様のモデルを必要とする.NETプラットフォームを構築しており、高速クエリとスケーラビリティの観点から最適なものを検討しています。

リレーショナルDBを使用することは可能ですか、それともグラフデータベースの方がはるかに優れていますか?

0 投票する
1 に答える
568 参照

sql-server - Neo4j グラフ データベースにインポートするために、SQL Server から CSV データをエクスポートします。

分析のために、高度に接続されたデータを SQL Server から Neo4j に一括インポートする必要があります。

これについて説明している Neo4j 開発者ガイドには 2 つのリンクがあります。

SQL Server インポートおよびエクスポート ウィザードによって生成された CSV ファイルからデータをインポートする最初の試みは、テーブルの列をノード属性にロードできませんでした。

上記のリンクにリストされているNeo4jの要件に準拠したCSVエクスポートを生成するようにSSISパッケージを構成するためのガイドを知っている人はいますか?

0 投票する
1 に答える
858 参照

sparql - Syntax to query for optional relationships in Microsoft SQL Server 2017 Graph Database?

I want to select optional relationships in . Similar to optional in e.g.:

from https://www.w3.org/2001/sw/DataAccess/rq23/#OptionalMatching.

And similar to LEFT JOIN in normal ; e.g.:

Is there an easier way via MATCH?

ドキュメントにMATCHは、「オプションの」構成が記述されておらず、コメントには次のように記載されています。

ORandNOT演算子はMATCHパターンではサポートされていません。句で使用するMATCH他の式と組み合わせることができます。ただし、 orを使用した他の式との組み合わせはサポートされていません。ANDWHEREORNOT