2016-01-22 193 views
3

在DynamoDB中,我有一個表,其中每個記錄都有兩個日期屬性,create_datelast_modified_date。這些日期採用ISO-8601格式,即2016-01-22T16:19:52.464ZDynamoDB查詢/根據時間戳排序

我需要有基於這樣create_date > [some_date]

  • 得到的所有記錄,其中last_modified_date < [some_date]
  • 一般
  • 得到的所有記錄,其中[date_attr] [comparison_op] [some_date]等的create_datelast_modified_date

    • 得到的所有記錄查詢他們的一種方式...

    這樣做的一種方法是插入虛擬固定屬性wi TH每個記錄並與虛設屬性作爲分區鍵和create_date作爲排序鍵創建索引(對於last_modified_date同樣。)

    然後,我將能夠查詢它是這樣通過設置固定虛設屬性作爲分區鍵,日期屬性作爲排序鍵,並使用任何比較運算符<,>,<=,>=,等等。

    但這看起來不太好,看起來像一個黑客而不是一個適當的解決方案/設計。有沒有更好的解決方案?

  • +1

    這是相關的:http://stackoverflow.com/a/38790120/491553 –

    回答

    4

    有一些事情的NoSQL數據庫是不是良好,但您可以通過以下方案解決這個問題:

    解決方法1)移動搜索的目的本表數據到SQL數據庫:這可能是有效的,因爲你將能查詢按您的要求,因爲你需要不同的DB的

    解決方案2之間的數據同步,這可能是乏味的,有時)與亞馬遜CloudSearch集成:您可以將這個表Cloudsearch整合,然後比較然後查詢您的DynamoDB表查詢Cloudsearch

    溶液3)集成與Elasticsearch:ElasticSearch類似於雲雖然每個具有一定的優點和缺點,最終的結果將是相同的,而不是查詢DynamoDB查詢Elasticsearch

    解決方案4)正如你在你的問題中提到的添加索引