了解 Open Policy Agent (OPA) 磁盘存储实现对 .sst 和 .vlog 文件的使用 (BadgerDB)
Understanding the Open Policy Agent (OPA) Disk-Storage implementation's use of .sst and .vlog files (BadgerDB)
我正在研究一些利用磁盘存储的 OPA 示例 like this one。我已经删除了临时目录以支持永久目录(就像我们在生产系统中那样)并且我注意到一些奇怪的行为。如果我先写示例记录
"authz": {
"tenants": {
"acmecorp.openpolicyagent.org": {
"tier": "gold"
},
"globex.openpolicyagent.org" :{
"tier": "silver"
}
}
}
然后该目录将填充 000001.sst
、000001.vlog
、DISCARD
、KEYREGISTRY
和 MANIFEST
文件。但是,在每次后续读取时,都会添加一个新的 .sst
和 .vlog
文件,并添加一个递增的数字,例如 000002.sst
。一直写新文件,尤其是读,好像效率真的很低,为什么会这样?
此外,是否期望我在另一个线程上进行自己的垃圾收集,或者这是 OPA 或 Badger 内置的东西?
It seems really inefficient to keep writing new files on writes and especially reads, why is this the case?
从使用OPA的角度来看,这应该算是一个实现细节。我无法评论这些文件的必要性,除了 Badger 就是这样做的。 Badger 本身远非简单,它是一个涉及自己缓存等的 multi-layer 系统——它太复杂了(对我来说!)无法以任何方式判断其 on-disk 行为。
Also, is the expectation that I do my own garbage collection on another thread or is this something that comes built in with OPA or Badger?
你不应该做任何这样的事情。事实上,OPA 有一个 goroutine 运行 会定期调用 the advised GC routine, here's the code.
如果您发现需要进一步深入研究,Badger 社区可能是另一个不错的场所,请参阅 this Dgraph discourse category。 (我们当然也可以在 OPA slack 上讨论这个问题。)
我正在研究一些利用磁盘存储的 OPA 示例 like this one。我已经删除了临时目录以支持永久目录(就像我们在生产系统中那样)并且我注意到一些奇怪的行为。如果我先写示例记录
"authz": {
"tenants": {
"acmecorp.openpolicyagent.org": {
"tier": "gold"
},
"globex.openpolicyagent.org" :{
"tier": "silver"
}
}
}
然后该目录将填充 000001.sst
、000001.vlog
、DISCARD
、KEYREGISTRY
和 MANIFEST
文件。但是,在每次后续读取时,都会添加一个新的 .sst
和 .vlog
文件,并添加一个递增的数字,例如 000002.sst
。一直写新文件,尤其是读,好像效率真的很低,为什么会这样?
此外,是否期望我在另一个线程上进行自己的垃圾收集,或者这是 OPA 或 Badger 内置的东西?
It seems really inefficient to keep writing new files on writes and especially reads, why is this the case?
从使用OPA的角度来看,这应该算是一个实现细节。我无法评论这些文件的必要性,除了 Badger 就是这样做的。 Badger 本身远非简单,它是一个涉及自己缓存等的 multi-layer 系统——它太复杂了(对我来说!)无法以任何方式判断其 on-disk 行为。
Also, is the expectation that I do my own garbage collection on another thread or is this something that comes built in with OPA or Badger?
你不应该做任何这样的事情。事实上,OPA 有一个 goroutine 运行 会定期调用 the advised GC routine, here's the code.
如果您发现需要进一步深入研究,Badger 社区可能是另一个不错的场所,请参阅 this Dgraph discourse category。 (我们当然也可以在 OPA slack 上讨论这个问题。)