我在軌道上的Web應用程序存儲在XML字符串中的一些模型對象的參數,所以無論何時我需要關於特定對象的一些信息,我必須解析它的XML字符串。 XML的長度很少超過100行。但由於我的願望優化我不知道我是否可以將分析的XML作爲Nokogiri的對象存儲在數據庫中。這是個好主意嗎?將nokogiri(或任何內部)對象保存到數據庫是一個好主意嗎?
2
A
回答
2
儘管可能有例外情況,但一般來說,您應該避免將marshalled objects直接存儲在您的數據庫中,除非您有一個很好的理由。在引入nokogiri的情況下,@ MU-是太短暫mentioned,引入nokogiri和元帥不玩好起來:
doc = Nokogiri::HTML(some_html)
Marshal.dump doc
# => TypeError: no _dump_data is defined for class Nokogiri::HTML::Document
這就是說,Marshal#load和Marshal#dump是核心Ruby庫的一部分,是相當玩的樂趣。除了with the docs,這裏是展示一個快速的代碼示例元帥是如何工作的,包括一個非常基本的基準比較Marshal.load
到Class.new
:
require 'benchmark'
data_string = <<-DATA
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
DATA
class Example
attr_reader :data
def initialize(data)
@data = data
end
end
example = Example.new(data_string)
dumped = Marshal.dump example
loaded = Marshal.load dumped
puts "String Bytesize: #{data_string.bytesize} vs. Dump Bytesize: #{dumped.bytesize}"
puts "Marshalled object is larger by #{dumped.bytesize - data_string.bytesize} bytes"
Benchmark.bmbm do |x|
x.report("Marshal.load: ") { Marshal.load(dumped).data }
x.report(" Example.new: ") { Example.new(data_string).data }
end
+0
謝謝大家!你的幫助是無價的:特別是我的僱主) –
相關問題
- 1. 將數據保存在strings.xml中是一個好主意嗎?
- 2. 使用MQ將數據存儲在數據庫中是一個好主意嗎?
- 3. 在數據庫中保存「聊天」數據是個好主意嗎?
- 4. 在任何地方保留任何託管對象是一個壞主意嗎?
- 5. 緩存javax.sql.Datasource對象的單個實例是個好主意嗎?
- 6. 單身REST數據庫資源是一個好主意嗎?
- 7. 創建數據庫包裝不是一個好主意嗎?
- 8. 數據庫列中的CSV - 不是一個好主意嗎?
- 9. 將亞馬遜Dynamo中的對象存儲爲Json是一個好主意嗎?
- 10. ASP.NET用於保存與數據庫連接的靜態對象。這是個好主意嗎?
- 11. 在VCS中保持數據庫遷移是一個好主意嗎?
- 12. 給自己分配一個對象是個好主意嗎?
- 13. 數據庫中的記憶 - 一個好主意?任何經驗?
- 14. 將數據保存在XML或數據庫中會更好嗎?
- 15. 將對象保存到數據庫?
- 16. 創建Exception作爲內部類是一個好主意嗎? C++
- 17. 創建大量couchdb數據庫來存儲註釋是一個好主意嗎?
- 18. 在Mongo數據庫中存儲圖像文件,這是一個好主意嗎?
- 19. 重新使用ADO.NET命令對象是一個好主意嗎?
- 20. AS3添加和刪除對象,這是一個好主意嗎?
- 21. 哪一個是最好的OLEDB或Excel對象或數據庫
- 22. 將我的DataContext存儲在會話內存中是一個好主意嗎?
- 23. 在數據類中進行數據庫查詢是一個好主意嗎?
- 24. 使用.txt填充數據庫是個好主意嗎?
- 25. 這是一個從數據庫中獲取任意數據的好方法嗎?
- 26. 將數據從Oracle提取到Hadoop。 Sqoop是一個好主意
- 27. 使用xml緩存/讀取數據而不是從MySQL數據庫讀取數據是一個好主意嗎?
- 28. C#在將多個對象保存到數據庫後獲取一個List或一組id數組對象
- 29. 將下載的JSON數據緩存到SQLite數據庫 - 這是個好主意嗎?
- 30. 將Web服務中的數據緩存到數據庫中是個好主意嗎?
爲什麼不返工數據庫模式,這樣你不存儲XML呢?我懷疑Nokogiri文檔是以任何理智的方式序列化的,除非將它們轉換回XML。 –
我討厭想到這會對代碼運行時造成的影響。如果你試圖節省內存,你是這樣做的,以犧牲速度爲代價。相反,購買更多的RAM並將其保存在內存中。 –