1

最新の投稿を表示する必要があります。将来的には、約数十億の投稿があるでしょう。

したがって、これは最新の投稿リストを表示する最適化された方法です。

  1. すべての投稿の月を 201506 として保存し、インデックスを作成します。また

  2. 201506 .. 201508 としてラベルを作成し、投稿を特定のラベルに保存します。

次に、毎月に基づいて降順で投稿を取得します。または、これを行う他の方法があります。

また、ラベルが多い場合、パフォーマンスに影響するかどうか。

4

1 に答える 1

1

システム内のすべての投稿の順序付きリスト (作成者に関係なく) が必要な場合は、タイムラインを表すリンクされたリストとして整理できます。

(post1:Post) -[:PREV_POST]-> (post2:Post) -[:PREV_POST]-> ...

したがって、PREV_POST関係は最新の投稿を前の投稿に接続します。

さらに、timetree がある場合もあります (実装例としてhttp://graphaware.com/neo4j/2014/08/20/graphaware-neo4j-timetree.htmlを参照してください)。ドメインの最大粒度は月であるため、タイムツリーには年と月があります。

各月の最初の投稿のみがタイム ツリーの月ノードに接続されます。サンプル モデルについては、以下を参照してください。

ここに画像の説明を入力

たとえば、2014 年 12 月の投稿を降順でクエリするには、まずタイムツリーでそれぞれの月 (2014 年 12 月) を見つけ、次の月 (2015 年 1 月) に移動します。2 つの月のノードから、その月の最初の投稿に移動し、その間のすべてを見つけます。

MATCH (:TimeRoot)-[:HAS_YEAR]->(startMonth:Year{year:2014})-[:HAS_MONTH]->(endMonth:Month{month:Dec}),
  (startMonth)<-[:FIRST_IN_MONTH]-(firstPost:Post),
  (endMonth)<-[:FIRST_IN_MONTH]-()-[:PREV_POST]->(lastPost:Post),
  path = (lastPost)-[:PREV_POST*]->(firstPost)
UNWIND nodes(path) as post
RETURN post

実際にクエリをテストしていないため、タイプミスがある可能性があることに注意してください。その意図は、完全なソリューションではなく、モデルのデモを行うことでした。

于 2015-06-27T08:55:26.023 に答える