gpt4 book ai didi

map - 将映射键/值存储在持久文件中

转载 作者:IT老高 更新时间:2023-10-28 13:07:22 24 4
gpt4 key购买 nike

我将创建一个或多或少的结构:

type FileState struct {
LastModified int64
Hash string
Path string
}

我想将这些值写入文件并在后续调用中读取它们。我最初的计划是将它们读入 map 并使用键(路径)查找值(哈希和 LastModified)。在 Go 中有一种巧妙的方法吗?

如果没有,您可以推荐什么文件格式?我在以前的项目中阅读并尝试了一些键/值文件存储,但没有使用 Go。现在,我的要求可能相当简单,因此大型数据库服务器系统将是矫枉过正。我只想要一些我可以快速、轻松、便携地写入和读取的东西(Windows、Mac、Linux)。因为我必须在多个平台上进行部署,所以我试图将我的 non-go 依赖项保持在最低限度。

我考虑过 XML、CSV、JSON。我简要地查看了 Go 中的 gob 包,并注意到 Go 包仪表板上有一个 BSON 包,但我不确定这些是否适用。

我的主要目标是快速启动和运行,这意味着我需要编写的代码量最少并且易于部署。

最佳答案

只要您的整个数据都适合内存,就不会有问题。使用内存映射并定期将快照写入磁盘(例如,通过使用 gob 包)是一个好主意。 Practical Go Programming Andrew Gerrand 的演讲使用了这种技术。

如果您需要使用不同的程序访问这些文件,使用 json 或 csv 等流行的编码可能是个好主意。如果你只需要从 Go 中访问这些文件,我会使用优秀的 gob 包,它有 a lot of nice features .

一旦您的数据变大,每次更改时始终将整个数据库写入磁盘并不是一个好主意。此外,您的数据可能不再适合 RAM。在这种情况下,您可能需要查看 leveldb另一位 Go 开发人员 Nigel Tao 的键值数据库包。它目前正在积极开发中(但尚未可用),但它还将提供一些高级功能,如事务和自动压缩。此外,由于 leveldb 设计,读/写吞吐量应该相当不错。

关于map - 将映射键/值存储在持久文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com