問題タブ [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.
sql - SQLServerのグラフエッジの有向/無向テーブルを効率的にクエリする
各行がグラフネットワークのエッジを表すSQLサーバーテーブルがあります。FromNodeIDとToNodeIDはノードテーブルへの外部キーであり、スキーマは次のようになります。
さて、各エッジが方向付けられている(つまり、一方向)と考えると、どのノードからでも直接アクセスできるすべてのノードを簡単に見つけることができます。FromNodeID列にインデックスを追加してから、次のようなクエリを実行します。
結果:5
しかし、各エッジを単方向として扱いたい場合、テーブル/クエリを構造化するための最良の方法は何でしょうか。つまり、ノード3から始めて、結果を取得したいと思います。
結果:1、2、5
私が考えることができる最も簡単な方法は、ToNodeID列にインデックスを追加してから、次のようなクエリを実行することです。
しかし、これには明らかに2つのクエリの結果セットを組み合わせることが含まれ、あまり効率的ではないようです。これを1つのクエリで記述するためのより良い方法はありますか?(反転したエッジをテーブルに再度挿入したくないことに注意してください。実行時にエッジを有向または無向として扱うことができる必要があります)。
アドバイスありがとうございます!
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 がない場合 (絶対確実) に一時テーブルがハードディスクにスワップされるため、遅くなります。
関数とテーブル値関数を使用するソリューションについても同様です。
algorithm - SQL Server/AzureまたはGraphDBを使用したモデルのようなTwitter
SQLサーバーを使用してDBのようなTwitterを設計することは可能ですか?高いスケーラビリティと高速クエリを保証するDB。
Twitter(User、Follower、Tweet)のような同様のモデルを必要とする.NETプラットフォームを構築しており、高速クエリとスケーラビリティの観点から最適なものを検討しています。
リレーショナルDBを使用することは可能ですか、それともグラフデータベースの方がはるかに優れていますか?
sql-server - Neo4j グラフ データベースにインポートするために、SQL Server から CSV データをエクスポートします。
分析のために、高度に接続されたデータを SQL Server から Neo4j に一括インポートする必要があります。
これについて説明している Neo4j 開発者ガイドには 2 つのリンクがあります。
SQL Server インポートおよびエクスポート ウィザードによって生成された CSV ファイルからデータをインポートする最初の試みは、テーブルの列をノード属性にロードできませんでした。
上記のリンクにリストされているNeo4jの要件に準拠したCSVエクスポートを生成するようにSSISパッケージを構成するためのガイドを知っている人はいますか?
sparql - Syntax to query for optional relationships in Microsoft SQL Server 2017 Graph Database?
I want to select optional relationships in sql-server-2017-graph. Similar to optional
in sparql e.g.:
from https://www.w3.org/2001/sw/DataAccess/rq23/#OptionalMatching.
And similar to LEFT JOIN
in normal sql; e.g.:
Is there an easier way via MATCH
?
のドキュメントにMATCH
は、「オプションの」構成が記述されておらず、コメントには次のように記載されています。
OR
andNOT
演算子はMATCH
パターンではサポートされていません。句で使用するMATCH
他の式と組み合わせることができます。ただし、 orを使用した他の式との組み合わせはサポートされていません。AND
WHERE
OR
NOT