[英]Optimal relation in Mongoid for a very large data set
我正在嘗試使用具有每5分鍾(288 /天)發送Observations
Stations
應用程序中的Mongoid。 哪個加起來會構成一個非常大的數據集,如何建立性能關系?
最關鍵的查詢是獲取所有測站和最后的觀測值。 聽起來很簡單,但在Postgres中是PITA。
我正在使用
Rails 4.0.3
Mongoid 4.0.0beta
1.嵌入式
class Station
embeds_many :observations
def latest_observation
observations.last
end
# fields ...
end
class Observation
embedded_in :station
# fields ...
end
2.有很多/屬於/ embeds_one:latest_observation
class Station
has_many :observations
embeds_one :latest_observation, class: 'Observation'
end
class Observation
belongs_to :station
after_save :update_station
def update_station
self.station.latest_observation = self
self.station.save!
end
end
我認為第一種選擇不是可行的解決方案。 您最終將獲得一些(很少)站點記錄,這些記錄會因嵌入觀測值而變得巨大。
關於MongoDB
我建議:
stations: [ { id: sta_1234, observations: [ {observation_id: obs_1234, observation_data: {} }, ...] }, ... ]
觀測值具有固定大小。
那樣
您將不會失去任何歷史
實際上, observations
可能更佳,因為它是observation_ids
而您只保留了id,或有關每個觀察值的一些有用數據
一個“缺點”是,您必須在某些時候使用原始的mongo,因為mongoid還不支持所有功能(但是),但是我認為這樣做的好處更大。
使用這種方法,您將不得不在插入應用程序時處理重復的數據,這應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.