2016-06-09 68 views

回答

1

鑑於數據模型:

​​

我能想到的最好的是做到以下幾點:

  • 插入所有的「歷史」中記載了一些合理的TTL。
    • 如何一個TTL的長取決於特定用例
  • 當通過用戶ID查詢,限制你的返回結果集10
    • SELECT * FROM history WHERE userid='fromanator' LIMIT 10;

但是,如果用戶在TTL中沒有任何歷史記錄,則採用這種方法,您將無法得到任何結果。根據您的使用情況,這可能是可以接受的。

如果你絕對需要保持至少在過去的10條記錄,那麼你將有一個更復雜的數據模型和應用程序代碼在卡桑德拉實現這一目標。

0

這可能不是最完美的解決方案,並不會嚴格遵守在任何給定的時間存儲10條記錄,但你可以行數據存儲爲一個列表(如果有結構的行數據,你」 d必須自己處理此結構或使用user defined types)。如果您在寫它已經有這個名單提供給你,你只需將它截斷寫作之前最新的10個值,否則你可能會等待下一次讀取的是,名單上做,直到它截斷10個記錄,然後把它寫回卡桑德拉。

如果您不太關心存儲了多少數據,而只關心檢索最近的10個結果,那麼fromanator's solution(帶或不帶TTL取決於您是否更關心數據或確保10個結果)是最好的。

相關問題