2011-12-30 53 views
3

對於我當前的項目,我需要在磁盤上存儲一個小數據庫,我讀過一次程序運行後寫入一次。Perl DBM與可存儲

我已經研究過perls DBM的功能,並且從我的理解中可以看出,它只提供一個散列,存儲在磁盤上,每次讀寫直接寫入磁盤。

我的問題是:難道我不能簡單地使用Storable或任何相關模塊來實現相同(持久散列),文件I/O開銷少得多? (該哈希值將永遠是大,不適合到內存中容易)

問候 尼克

+1

你指的是['DBM :: Deep'](https://metacpan.org/module/DBM::Deep)? – Zaid

+0

我正在使用'dbmopen()'函數... – Nick

+0

如果您不是指DBM :: Deep,那麼您應該是。 –

回答

2

SQLite正在迅速成爲一個簡單的磁盤數據庫的標準。在Perl中,你可以使用DBD::SQLite,你很好。

1

由於以前的答案並沒有真正回答您的實際問題,「是的,你可以」 ......有以下注意事項:

  • 可保存的是不是真的適合併發訪問。
  • 你將需要推出自己的「原子」更新(即:你將需要寫入一個tmp文件,然後重命名)。
  • 如果性能不是真正的問題,您也可以使用Data :: Dumper(生成的文件在某種程度上可以被人類讀取)。
  • 您可以將內容複製到CSV。

我經常在只有一個任務訪問文件時使用Dumper,並且如果我覺得合適,它會給我一種讀取/修改內容的方法。