2017-10-09 5 views
0

私は概念証明をしています。私は "JournalTitle"(各ジャーナルからの多くの読み込み)、 "Subject"という一意のプロパティを持たない "Product" Vクラス、およびそれらの間のエッジとして呼ばれるプロパティを持つ "ArticleRead" Vクラスを持っています"タイプ"。異なるクラスの値に基づいてVクラスのトップ50を選択してください

ArticleReadには、システムのユーザーが読み取ったすべての記事に頂点が挿入されています。

誰でもおおよそのSQLを提供して、特定のテーマからトップ50のジャーナルタイトルを見つけることはできますか?現在のRDBMSでは、その件名の製品を見つけて、その製品のjournalTitleでarticleReadsをすべてカウントアップしてから、トップ50を取得する必要があります。

また、エッジの修正や歓迎されるものについての提案(これは、最小限の自己学習の後にやっている概念の証明です)。

答えて

0

あなたは次のことを試すことができます。

SELECT FROM ( 
    SELECT JournalTitle, count(*) as count FROM (
    SELECT expand(out()) FROM Product WHERE Subject = ? 
    ) GROUP BY JournalTitle 
) ORDER BY count LIMIT 50 

または

SELECT FROM (
    SELECT JournalTitle, count(*) as count 
    FROM ArticleRead 
    WHERE in()[0].Subject = ? 
) ORDER BY count LIMIT 50 

ただ、このような操作の記録、(単一レベルトラバーサルおよびアグリゲーション)のためのグラフデータベースの利点を比較リレーショナルデータベースへのアクセスは、通常は実質的ではありません。

+0

ありがとうございました。 「本物の」データには、件名の製品の子があり、記事の読み込みにエッジがあり、記事のテラバイトのクラスがあります。 articlesreadsのサイズが大きすぎるため、毎年古いデータをOracleに捨て去ります。私はドキュメント/グラフのデータベースがより良い解決策であることを証明したいと考えています。私はこれにいくつかの問題を抱えていますが、私は私のエッジを後方に持っていると思います(私のエッジにはproductIDが出ています)、私は "in"と "out"の名前を変更しようとしました。 –

+0

微妙な調整 - GROUP BY JournalTitle 注文数制限50 –

関連する問題