2014-10-09 14 views
2

我試圖從現有的csv文件創建大約20000列寬700行的數據庫。在grails中,我希望20,000列域屬於另一個更簡單的域(大約200列)。但在編譯後,我得到:具有巨大表的Grails應用程序

java.lang.RuntimeException: Class file too large! 

這是可以理解的,因爲它的方式太多的數據。我的問題是,在Grails中處理這個問題的最好方法是什麼?我應該簡單地將大表分成不同的域嗎?尋找不同的表格格式?

我特別擔心:

1)搜索時,搜索解析方法,然後委託給子域。

2)將數據從巨大的csv文件導入到域中。

+0

RuntimeException是否來自具有20,000個持久性屬性,200個持久性屬性或其他內容的域類? – 2014-10-09 16:41:07

+0

當我在將20,000個持久性屬性添加到域後嘗試執行grails run-app時,它剛剛出現。但我認爲它甚至沒有達到它是一個Grails問題,它不能編譯它,因爲它太大了。堆棧跟蹤類似於這個問題:http://stackoverflow.com/questions/17758510/groovy-configslurper-gives-class-file-too-large-runtimeexception – janDro 2014-10-09 16:43:32

+1

你有一個腳本或東西生成該域的源代碼具有20,000個屬性的類或手動定義所有這些屬性? – 2014-10-09 16:45:36

回答

8

當你碰到像這樣的JVM大小限制時,把它當作一個很大的暗示,你的方法是離開的。正如我在本週早些時候提到的另一個問題,我們甚至不應該知道這些限制是什麼,更不用說接近它們的地方。

我沒有看到使用類似GORM的東西或者甚至是一般的O-O方法來獲得這麼多數據的好處。它不是任何現實的,可用的意義上的對象 - 這是一大堆數據。無論如何,無論如何你都需要以編程方式訪問所有內容,因爲手動管理代碼將會是瘋狂的代碼量。你真的打算創建這些野獸的一個或多個實例並按方法參數傳遞它們嗎?

您需要從大數據的角度來看待,而不是從ORM的角度來看。

+1

嗯好吧,我明白了。那麼,如果我重新排列我的域名文件以使列名成爲具有某個值(我將要分配的原始類型)的某個通用屬性,然後使用id + fk對它們進行排序呢?這會起作用嗎?基本上使領域waayyy更小,最終20,000 * 600行?順便說一句,真棒,以獲得一個問題回答由布爾克貝克斯:) – janDro 2014-10-09 17:06:21

+2

有太多的後續問題要問,這些會發送到討論,但SO不是爲此設計的。解決重點問題並提供一個或多個可能的重點答案是最好的。你需要考慮數據的結構,如何使用它以及研究工具。在NoSQL DB中這可能會更好,但是這裏有很多選項。而且您還需要查看最近開發的可以輔助分析和數據管理的工具。在這兩種情況下,這些都不會是簡單的決定,而且您不需要鎖定1種方法。 – 2014-10-09 17:20:53