如何處理十萬級別的資料資訊?

時間 2021-05-12 14:42:18

1樓:

要我的話就結構陣列+二分法了(滑稽)

當然map/hash都可以,最方便的還是寫個xml/json,然後上VSCode ctrl+F,找到人工讀出來

2樓:

easy 模式:建一千個資料夾,每個資料的主鍵算個hash,對1k取餘,放進相應的資料夾裡。檔名是hash,內容是記錄。其實就是充分利用檔案系統。

hard 模式:自己寫乙個k-v資料庫。因為考慮你的需求,不需要隨機訪問,k-v應該也夠了吧。

3樓:桃師傅

題主剛剛開始學計算機,對資料量的多少可能沒概念,很正常,我一開始也這樣。雖然我現在也是個找不到工作的菜逼。

10W條記錄,就算一條10K大小,也才乙個G的大小,你可以查一下機械硬碟的讀取速度,大約在200M每秒,也只需大約5秒鐘,然後你還有排序等等操作,需要cpu來算要多久呢?現在的CPU主頻一般是就是3Ghz+,姑且認為是每秒鐘30億次,你就10W條資料,估計都不夠人算一秒的。姑且也認為是5秒吧,所以10內出結果,我覺得可以接受。

雖然是比較慢,但是也沒有你想象中那麼可怕。十萬條,以現在的機器效能隨便怎麼做都可以。

這個題換個問法就會麻煩許多,我每天產生10億條登陸日誌,怎麼樣才能快去統計出乙個月內登陸次數最多的使用者?或者增加點障礙,統計出登陸地域最多的使用者?這下估計就沒人嘲諷你說為啥不用資料庫,資料結構學的不好了啥啥的。

4樓:謝慕安

這個問題不就是你想自己造個簡單的資料庫輪子嗎?

比如:每本書籍資訊就是乙個檔案

另外,各種排序方式也都儲存到檔案裡,起到索引的作用。

5樓:

你意識不到其實你提了乙個很好的問題,事實上商業應用當中的確有這個問題,我mark下,等下有空了來答

現實的狀況,很多時候,並不具備安裝無論是關係型還是NOsql的情況,並非很多系統都擁有無限的後台,我就遇到過現實的要求,在落後地區比如非洲,網路不普及或者不穩定地區比如東南亞的某些小國,在有神經病要求的地區,比如日本鄉村,機器的狀況很差。你見過只有乙個微控制器要跑金融系統的狀況嗎?只有乙個平板要儲存數十萬計算規則的情況嗎?

這些都真實存在於這個世界上。這時候,安裝乙個資料庫就是非常奢侈的事情,應用能裝進去就很不錯了。有人會說,安卓上的嵌入式資料庫也很不錯,當然還有記憶體資料庫可以使用,沒錯,是有這些工程(engineering)的做法,但是,現實情況是不允許這麼做,有財務方面的考慮,有資料大小的限制,有單純的人為限制。

所以我總是說,先架構,後工程才是正確的做法,相當多的初級中級人員,腦子裡只有工程,沒有架構思想,這就阻止了他更上一層樓,好在技術有乙個分支,是chief engineer,能夠單單專心於工程。

好,如果前提條件是就不能使用資料庫,如何組織我們的資料?這要區分兩個概念,執行時資料,和持久化資料。斷電以後能存在的資料,和在計算過程當中的資料,他們應該有不同的儲存方式。

比如你完全沒有資料庫,那麼你可能不得不使用檔案系統來進行儲存,這一套你可以設計,最簡單就是古代COBOL儲存方式,按行定長。記憶體中的資料,你既可以採取古典方式,以object的方式儲存使用,也可以用記憶體資料庫在計算是讀入的方式來組織。你目前遇到的迷思主要在於執行時資料和儲存資料沒有分層考慮。

你的系統設計應該有乙個業務層,這個層專注於利用執行時資料,其下的乙個層乃是執行時資料組織層,這個層用來儲存執行時資料,提供給上層使用,再其下,乃是data access object層,這個層專注於讀寫持久化資料到執行時資料層,最下層乃是持久化層。這樣的話, 你在每個層需要處理的任務非常集中。你可能採取陣列方式在執行時組織資料,但是你的持久化層的儲存可能採取鍊錶(具體可以繼續優化設計,僅僅比喻),這樣你就不會存在陣列的持久化會很低效這種問題了。

6樓:卡拉迦迪斯

你用文字序列化資料處理十萬級資料

然後發現

需要排序、篩選、查詢

需要分表、鎖、事務

然後……

你發現自己實現了乙個資料庫

還是特別LOW的那種……

7樓:飄逸的h

你基礎太差,補好基礎再做吧。

1.這種管理系統資料必須儲存在資料庫,需要持久儲存。

2.這種系統不需要與客戶端實時互動,可以延遲,且使用者之間也沒有實時互動,沒必要把資料都放在記憶體。

3.你就是想放在記憶體用來練習的話,那你只提到陣列和鍊錶,這是查詢最慢的,你至少應該知道二叉樹吧,知道二叉樹的原理你就知道怎麼查詢快了,更進一步就是多叉樹、紅黑樹之類的。

4.3中提到的這些在c++中都有實現,是容器,比如紅黑樹就是map;如果資料較大,想要更高的效率,那用雜湊表unordered_map(但是無序)。

你這上來就要做,做了也沒價值,所以真的『』學習資料結構後 「再規劃一下怎麼做吧。真的學了不可能在這裡說用陣列和鍊錶了。

stata 如何處理文字資訊進行賦值?

Gloud When I see a do file with a number of very similar statements,I know that the author s first language was not Stata.A construct such as generate...

如何處理(目標檢測)資料集中的ignore region?

赫拉迪克方塊 首先,我們想一下為什麼要標註 ignore region?據我了解,很多資料集中標註 ignore region 是為了避免歧義或者降低標註成本,比如 一大塊區域含有很多某個類別的物體,但是標註他們沒有太大的意義,比如遠處的人群 有可能產生歧義的物體,比如標註 human 的時候有一些...

基於hive的資料倉儲如何處理資料更新(update)問題?

tharvest 肯定不能使用hive更新,所謂的更新也是用增量資料merge歷史資料後儲存而替換歷史資料。如果對實效性要求不高,比如T 1,一般是按天分割槽,按天分割槽實際上已經儲存了一條記錄按天的變化維。按天同步資料存在乙個缺點,就是業務資料庫的一條記錄在一天內更新多次,只能取到資料同步時該記錄...