首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 10注册表作为数据库

Windows 10注册表作为数据库
EN

Stack Overflow用户
提问于 2018-07-16 09:45:23
回答 2查看 673关注 0票数 0

我想要存储数据,大约200,000个键值对。

我知道Windows注册表对此不屑一顾,但请接受我的建议,因为技术进步了……

如果我将它存储在注册表中,并且我的应用程序在app类型的容器中(实际上它将在UWP容器中),那么注册表是我的应用程序的本地注册中心。

所以,只有我的应用程序才能访问注册表,它是windows注册表的一个子集(缩小了大小),并且我可以直接访问(例如,它没有通过Windows 10的文件访问代理程序)。

这有什么问题吗?

  • 表演?和什么相比?
  • 最大尺寸?
  • 多线程访问?
  • 腐败?

我将使用.net 4.7.2和C#。像SQLite这样的替代方案意味着添加组件和构建DB,而不是KVP的顶部。其他想法是esent引擎,但这需要一个.net包装器。谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-02-02 14:10:55

具有硬编码字段大小的二进制文件包装器可以工作得很好,但存在r/w膨胀缺陷。为此,移动到内存映射的文件,这是完全令人敬畏和闪耀的快速( reg蜂箱是这样做的fyi)。

您可以在(Get|Write)PrivateProfile*.函数上使用pinvoke。那些古老的东西还能用。

总的来说,我看到了三个动机:读、写和更改,检测/通知。对于前两种情况,我确认注册表对于状态持久性来说不是很好的存储,考虑到它上的一般负载(使用sysinternals 'Path包含HK',并观察谁正在锤击(RegRead.*)或纹身注册中心(RegWrite.*))。当然,配置存储是可以的,这是注册表的最初设计意图。

监控是另一回事。这将是很好的,并将允许您去事件驱动的数据存储。

见:pinvoke.net FindFirstChangeNotification。

票数 1
EN

Stack Overflow用户

发布于 2018-07-16 13:12:13

正如“AlexK”所指出的。windows注册表,虽然它是一个数据库,但它没有索引,因此性能非常差。这是一个很好的理由不使用它。

我将调查ESENT和其他基于NoSQL的KVP商店。

多亏了所有的帖子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51358928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档