所以我希望這個問題已經得不到解答,但我似乎無法弄清楚正確的搜索術語。ruby/python中的低級文件處理
首先一些背景: 我有表格式的文本數據文件,可以很容易地爬到10 GB的GB。處理它們的計算機已經從長時間的數據收集(高達30-50MB/s)中大量加載,因爲它正在進行設備處理和控制。因此,磁盤空間和訪問非常重要。由於空間限制,我們還沒有從旋轉磁盤轉移到SSD。
但是,我們正在尋找一些不需要每個數據點的剛剛收集的數據。我們希望能夠減少數據並收集每第1000個點。但是,加載這些文件(每個千兆字節)會給磁盤帶來巨大負載,這是不可接受的,因爲它可能會中斷實時採集系統。
我想知道是否有可能使用低級別的方法訪問文件中的每個第n個字節(或其他方法)(如數據庫一樣),因爲該文件定義得非常好(兩個64位雙精度每一行)。我知道太低的訪問權限可能無法正常工作,因爲硬盤驅動器可能是分散的,但最好的方法/方法是什麼?我更喜歡python或ruby的解決方案,因爲這就是處理的過程,但理論上R,C或Fortran也可以工作。
最後,升級計算機或硬件不是一種選擇,設置系統需要花費數百個工時,因此只能執行軟件更改。但是,這將是一個長期項目,但如果文本文件不是處理這些文件的最佳方式,我也可以接受其他解決方案。
編輯:我們生成(取決於使用情況)從50000行(記錄)/秒到500萬行/秒的任何地方數據庫不可行,無論如何。
爲什麼不直接將數據直接收集到數據庫中? – MattDMo
不幸的是,儀器控制和收集軟件有一個可怕的數據庫接口,速度非常慢,試圖創建一個記錄需要50毫秒,我們每秒產生500萬條記錄。我們可以在完成後將大數據文件放在一個blob中,但這並不能解決我們的問題,因爲數據正在被收集數小時。 – lswim
你在什麼操作系統上?這是一個非常有趣的問題。 –