![](/img/trans.png)
[英]Which is better for processing a huge file in Java - XML or Serialized file?
[英]Processing XML file with Huge data
我正在開發具有以下要求的應用程序 -
現在,我擔心的是 XML 文件可能很大,比如“100MB”,而我的 JVM 的內存只有 512 MB,那么我如何將這些內容放入 Chunks 並傳遞給 Parsing,然后將數據插入 PL /SQL 表。
由於可以同時運行多個請求,並且考慮到 512MB 的內存,什么是最好的處理方式。
我如何將數據放入 Chunks 並將其作為 Stream 傳遞以進行 XML 解析。
Java 的XMLReader是一個 SAX2 解析器。 DOM 解析器讀取整個 XML 文件並創建一個(通常很大)數據結構(通常是一棵樹)來表示其內容,SAX 解析器允許您注冊一個處理程序,當 XML 文檔的各個部分被調用時,該處理程序將被調用。認可。 在該回調代碼中,您只能保存足夠的數據來執行您需要的操作——例如,您可以將所有字段保存為數據庫中的單行,插入該行然后丟棄數據。 使用這種類型的設計,您的程序的內存消耗取決於文件大小,而不是取決於單個邏輯數據項的復雜性和大小(在您的情況下,將成為數據庫中一行的數據)。
即使您確實使用了 DOM 樣式的解析器,事情也可能沒有您預期的那么糟糕。 XML 非常冗長,因此(取決於它的結構方式等)一個 100 MB 的文件通常只表示 10-20 MB 的數據,而少至 5 MB 的數據不會特別罕見或令人難以置信。
任何 SAX 解析器都應該可以工作,因為它不會像 DOM 解析器那樣將整個 XML 文件加載到內存中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.