如何在Database.LevelDB.Higher中使用runBatch?

时间:2014-10-25 21:24:50

标签: haskell leveldb

我正在和Database.LevelDB.Higher一起玩,虽然表演很适合偶尔获取和放置,但对于建立像这样的大型数据库来说并不好:

runCreateLevelDB "mydb" "" $
    mapM_ (uncurry put . serialize) bigTable

花费65秒来插入1M小记录。我的猜测是每个put来电都有一些开销,这就是文档提到这些的原因:

runBatch :: MonadLevelDB m => WriterT WriteBatch m () -> m ()
putB :: MonadLevelDB m => Key -> Value -> WriterT WriteBatch m ()

文档有点神秘,我很难理解这些类型。这尤其不起作用:

runCreateLevelDB "mydb" "" $
    runBatch
        mapM (uncurry putB . serialize) bigTable

我很惊讶在GitHub上找不到使用Database.LevelDB.Higher的代码。它似乎是一个强大的工具。

更新

我确实在leveldb-higher本身的测试套件中找到了一个例子。我太近了

runCreateLevelDB "mydb" "" $ do
    runBatch $
        mapM_ (uncurry putB . serialize) bigTable

但是,这需要59秒。所以也许表现不太好......

0 个答案:

没有答案