簡単なグラフを作成しています。頂点とエッジを追加してもかなりうまく機能するように、グラフを作成する方法について提案をお願いしたいと思います。グラフのレイアウトはこんな感じです。
user --> follows --> user (userVertex)
user --> generates --> activity (activityVertex)
これは私の質問です:
select
from (
select
flatten(out[label='generates'].in)
from (
select
flatten(out[label='follows'].in)
from #6:0
)
)
where @class = 'activityVertex'
order by id desc
limit 20
そして、ページ付けを行うとき(たとえば、より多くのアクティビティを表示するとき)、これをwhere clause
:に追加するだけです。
where @class = 'activityVertex'
and id < 1234
limit 20
上記は、1234
表示されている最後のアクティビティのIDです。
これは、ユーザーが10人未満のユーザーをフォローし、各ユーザーのアクティビティが500人未満の場合、すべて正常に機能します。しかし、それより大きくなるとorder by
、ユーザーにアクティビティストリームを提示するために、日付ごとにすべてのアクティビティを注文する句にそのような負担がかかります。
ツイッターはどうするのかな?厳密にはOrientDBに関連していないものでも、これを可能にするまだ適用していない設計原則はありますか?