簡體   English   中英

NoSQL (DynamoDB) 數據庫設計

[英]NoSQL (DynamoDB) database design

我正在開發一個允許跟蹤股票投資組合的小項目。 用戶可以擁有無​​限數量的投資組合,其中包含無限數量的股票,包括有關股票單位數量和購買價格的信息。

我的想法如下,但我很想聽聽您的想法:

投資組合表

{ 
  userid, (primary partition key, Cognito)
  portfolioid, (primary sort key, String)
  name, (String)
  stocks[] {
    stockid, (String)
    units, (Number)
    purchase_price, (Number)
    purchase_cost, (Number)
  }
}

股票表

{
  stockid, (primary partition key, String),
  name, (String)
  exchange, (String)
  last_updated, (Date)
  prices[] {
    date, (Date)
    price, (Number)
  }
}

這有意義嗎?

我將在投資組合上運行的 2 個關鍵查詢:

  1. 顯示一個投資組合的所有股票的盈虧(最新價格 - 購買價格)
  2. 顯示所有投資組合,包括綜合損益(投資組合中每只股票的損益總和)

因此,理想情況下,對於那些查詢,我將直接在投資組合表中獲得股票價格信息,但隨后我需要每天更新(或者想象我更改為實時數據)每個投資組合,而對於上述表格,我只會更新股票表. 如何最有效地獲取這些數據?

期待您的反饋意見。 提前致謝!

上面的表結構看起來不錯,除了stocks表中的以下變化:

  1. 我建議將exchange作為partition-key ,因為大多數股票都是按交易所分類的,不同交易所的價格可能不同。
  2. 我希望在單獨的表(例如, stocks_archive )中包含股票的歷史價格數據,這將使對stocks表的查詢在任何給定情況下更有效地計算盈虧,因此您的stocks表應如下所示:
    {   
      stockid, (primary partition key, String), // consider renaming it to 'scrip_code', ref: https://www.investopedia.com/terms/s/scrip.asp
      name, (String)  
      exchange, (String)  
      last_updated, (Date)  
      price (Number)  
    }

祝一切順利!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM