2009-04-11 114 views
2

我在寫一個CAD(計算機輔助設計)應用程序。我需要運送這個產品的3D對象庫。這些只是由三維座標構成的簡單物體,其中不會超過300個。數據庫推薦

我正在考慮爲此目的使用關係數據庫。但考慮到我的簡單需求,我不希望任何事情複雜化。直到現在,我傾向於SQLite。它很小,運行在客戶端過程中,聲稱速度很快。除了我是個可憐的傢伙,它是免費的。

但是在我向SQLite提交自己的意見之前,我只想問你的意見,根據我的要求它是否是一個好的選擇。在做出決定之前,我還應該嘗試一些同樣的選擇嗎?

編輯

我失敗早些時候,我會船上面說的CAD對象不會是一成不變的就更不用說了。我希望用戶編輯它們(更改尺寸,顏色等)並保存回庫中。我也希望用戶添加他們自己的新創建的對象。請在您的答案中考慮這一點。

(感謝迄今爲止的答案。)

+0

還確實取決於您的OS /編程語言平臺。你在用什麼? Windows上的C#/ .NET? Linux上的Java? – 2009-04-11 19:31:42

+0

Marc,我將在Windows上使用C#。 – 2009-04-12 17:45:16

回答

0

您裝運了多少件物品?你可以在xml文件中定義每個對象和它們的座標嗎?所以基本上爲每個對象使用一個獨特的XML文件?您可以將這些xml文件放在一個目錄中。這可以是一個簡單的結構。

3

需要考慮的是您的程序對數據執行的操作。關係數據庫旨在處理數據集之間的複雜關係。但是,它們不是爲了執行復雜的計算而設計的。

此外,數據量和它的相對簡單性向我表明,您可以簡單地使用平面文件來存儲座標並在需要時將其讀入內存。通過這種方式,您可以設計數據結構,以更密切地反映您將如何使用這些數據,而不是如何存儲它。

許多語言提供了一種機制來將數據結構寫入文件並再次讀回,稱爲serialization。 Python的pickle就是這樣一個庫,我相信你可以找到一個適合你使用的任何語言。基本上,只需根據程序的使用方式來設計類或數據結構,然後使用其中一個序列化庫來填充該類或數據結構的實例。

編輯:要求結構是可變的並不真正影響很多關於我的答案 - 我仍然認爲序列化和反序列化是這個問題的最佳解決方案。用戶需要能夠修改和保存結構的事實需要一些計劃來確保文件完全正確地更新,但最終我認爲您最終會花費更少的時間和精力來使用此方法,而不是嘗試編組SQLite或其他嵌入式數據庫爲您完成這項工作。

數據庫會更好的唯一情況是,如果您有一個系統,其中多個用戶正在與中央數據存儲庫進行交互並更新中心數據存儲庫,並且對於像您要查看數據庫服務器(如MySQL)的情況,PostgreSQL或SQL Server的速度和併發性。

您還評論說您將使用C#作爲您的語言。 。NET支持序列號built in,所以你應該是good to go

1

我建議你考慮使用H2,它的確非常輕巧和快速。

1

當你說你將擁有一個包含300個3D對象的庫時,我假設你的意思是代表對象,而不是用戶將創建的模型。

我讀過object databases非常適合幫助解決CAD問題,因爲它們非常適合查找具有複雜模型特徵的長參考鏈。也許像db4o這樣的東西在你的上下文中會很有用。

0

我不會使用SQL數據庫。您可以使用XML文件輕鬆描述每個3D對象。將這些文件打包到一個目錄中並打包(zip)所有文件。如果您需要輕鬆訪問對象的元數據,您可以生成索引文件(僅限名稱或說明),因此不必將所有對象都解析並加載到內存中(如果您擁有類似庫管理器的內容,則不會很好)

有快速簡便的SAX解析器可用,您可以輕鬆編寫一個XML編寫器(或者找到一些可用於此的免費代碼)。

許多今天使用XML的類似應用程序。它易於解析/寫入,可讀性強,壓縮時不需要太多空間。

我已經使用Sqlite,它的易於使用和易於與自己的對象集成。但是我更喜歡Sqlite這樣的SQL數據庫,對於那些需要一些很好的搜索工具來處理大量數據記錄的應用程序。

0

對於具體要求,即提供與應用程序一起提供的對象庫,數據庫系統可能不是正確的答案。

首先想到的是,您可能希望文件是可更新的,即您需要能夠將文件刪除並更新到應用程序中,而無需更改應用程序的其餘部分。

第二件事就是您要傳送的數據是不可變的 - 因此,您不需要關係數據庫的功能,只需能夠以足夠的效率訪問特定模型即可。

爲了簡單(有點)一個XML文件會做得很好,因爲你有良好的結構。然後使用它作爲基礎,然後你可以選擇壓縮它,對它進行加密,將其作爲資源嵌入到程序集中(如果其中一個在.NET中播放)等。

很明顯,如果SQLite將其數據存儲在單個文件每個數據庫,如果你有其他的理由需要在你的存儲系統的數據庫的能力,那麼是的,但我想首先考慮數據庫的應用程序作爲一個整體。

0

SQL Server CE是免費的,佔地面積小(無需服務運行),並且與SQL Server兼容