推 revivalworld:我是為了減少 I/O 動作@@" 06/02 19:35
http://c2.com/cgi/wiki?TupleSpace)。
tupleSpace的model很簡單:generate tuple,match tuple。
例如,假設系統內部有以下tuple被產生:
("foo", 1, 2, "baz", 23.2)
(4, 5, 6)
("foo", 7, 2, 100, 89)
("bar", 9, 2, "xyzzy", 100.3)
那麼要是某個process執行以下的query,
("foo", ?int, 2, ?str, ?float)
就可以找到 ("foo", 1, 2, "baz", 23.2) 這個tuple。
另外,使用直譯式程式語言,透過 eval(以Perl為例),來執行新產生的function,
那就不用花時間在compile呵?
※ 引述《bero (bero)》之銘言:
: 回應前篇推文:
: 這個系統有很多大大小小不同的exe檔
: ﹙a-life,一開始原始的exe檔都不大,部分作為基礎架構的exe則都不大,但經過
: 幾個generation之後會出現一些比較大的exe檔,每次演化都會增減exe檔的原始
: 碼,增加的比減少的多,如下:﹚
: 假設現在我要作一個很基本的動作﹙每個執行檔隨時都在做類似的動作﹚
: 1.搜尋一資料表某一欄位值,搜尋該欄位每列資料中符合某條件的資料
: 2.依據每列資料所對應的欄位做搜尋,尋找符合的每一列
: 3.直到該每列資料不再對應到任何符合的列為止
: 4.將最後得到的所有列資料的程式碼片段依據某列資料的「描述」作字串連接
: 5.compile這個字串成exe
: 6.取代原有exe
: 資料庫部分:
: 程式碼片段也會不停增長。大約一萬五千多筆列資料,列成長不多,但資料可能成倍
: 成長,例如現在有五千筆資料約3G好了,可能經過兩個generation這五千筆資料變成
: 需要6G
: 在storage_zone版有與版友討論了一下,歸納如下:﹙這是我對該版友的答案的解讀
: ,若有解讀錯誤,請板上大大多多指教^^﹚
: ﹙以iRAM為解決方案﹚
: 1.OS精簡化,放在一片iRAM上即可﹙或1~3片iRAM作raid﹚
: 2.DB檔案分置不同片的iRAM上,不做raid。除非該DB檔案超過4G才作raid
: 3.大的程式碼檔案/exe檔/文字檔案全部放在iRAM的raid上﹙超過百MB的﹚
: 4.資料庫部分,可採memory storage方式﹙資料要符合規定﹚
: 文字檔會百MB的原因是這個系統會利用一些形式語言的字串去紀錄資料
: 不斷累加,該字串會非常長
: 所以其實我也不知道自己是需要大量I/O還是快速的I/O反應
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.222.123
抱歉沒辦法直接回答問題,只是覺得這樣的系統設計有點怪怪的~
看了storage_zone上的回應,GreatShot說的很有道理~~
(先評估花在compile以及i/o上的時間會是多少,再決定要購買什麼裝置)
不知道您的程式有試run過嗎?
compile program + al lot of .exe file + database~~
如果 .exe檔的個數固定,哪也許還ok,
但要是exe檔個數會增加,這個系統run起來應該會非常的慢呵!
之前在作一些大型,但是功能簡單的indexing時,還是都自己寫程式來處理。
因為試過用DB來儲存資料或是作indexing,overhead非常大~~~
您敘述的產生並取得特定欄位的model,跟很久以前曾看過的TupleSpace有點像,
而且有一些套件可以使用(