1
我正在構建一個簡單的圖,我想問你的建議如何做到這一點,以便當它獲得更多的頂點和邊添加時,它仍然會表現很好。我的圖形佈局是這樣的。OrientDB - 微博喜歡實現和訂購
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
子句上施加這樣的壓力,以向用戶呈現活動流。
我想知道twitter是如何做到的?是否有一些設計原則,即使那些與OrientDB不相關的設計原則,我還沒有申請,這將使這成爲可能?
這是一個很好的建議。但假設select查詢中總共有10,000個活動,並且您通過id對它們進行排序,orient仍然必須通過'id' desc命令所有這些頂點,然後跳過20不是嗎? – voldomazta 2012-08-12 14:25:09
是的,它不是很輕,但工作。這是因爲OrientDB避免使用遊標等服務器端資源。 – Lvca 2012-08-26 11:17:22