- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要在 Linux 的分布式系统中实现尽可能快的存储键/值对的方法。数据库的记录很小,平均256字节。
我正在考虑使用 open()、write() 和 read() 系统调用,并在文件中的某个偏移处直接写入键值对。我可以省略 fdatasync() 系统调用,因为我将使用带电池的 SSD 磁盘,所以如果系统意外关闭,我不必担心 ACID 合规性。Linux 已经提供了磁盘缓存实现,因此在已经加载到内存中的扇区上不会发生读/写。这(我认为)将是最快的数据存储方式,比任何其他具有缓存能力的数据库引擎(例如 GT.M 或 Intersystem 的 Globals)快得多。
但是数据没有被复制,为了实现复制,我可以使用 NFS 挂载另一台 Linux 服务器的文件系统并将数据复制到那里,例如,如果我有 2 台数据服务器(1 台本地服务器和 1 台远程服务器),我会发出 2 个 open()、2 个 write() 和 2 个 close() 调用。如果远程服务器上的事务失败,我会将其标记为“不同步”,并在远程服务器恢复时再次复制好文件。
您如何看待这种方法?会很快吗?我可以通过 UDP 使用 NFS,这样我就可以避免 TCP 堆栈开销。
到目前为止的优势列表如下:
我将在 C 中对此进行编码。为了在文件中定位记录,我将在内存中保留一个带有指向物理位置的指针的 btree。
最佳答案
我想到了一些建议。
是否需要为每笔交易打开()/写入()/关闭()? open() 的系统调用开销可能特别重要
您可以使用 mmap() 而不是显式 write() 吗?
如果您为每个事务执行 2 次 write() 调用(1 次本地,1 次 NFS),似乎任何类型的网络问题(延迟、丢包等)都有可能影响您的如果您正在等待 NFS write() 调用成功,则应用程序会突然停止。如果您不等待,例如通过从单独的线程执行 NFS 写入,您的复杂性将迅速增加(我认为“几行代码”不会保持正确。)
一般来说,我建议您在选择重新发明这个特定的轮子之前真正向自己证明可用的工具不能满足您的性能要求。
关于c - 实现高性能分布式文件系统/数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8807954/
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我有以下对象: var myObj = { "4":{//The key is a number String. id:4,name
我需要构建某种字典,其中还包含每个单词在该语言中出现的单词频率。通常,这将使用 std::unordered_map 来实现,对吧?现在问题来了……我想找到所有符合某些正则表达式的单词及其频率,而性能
软件开发通常会提到一个名词 “三高”,即高并发、高性能、高可用。 具体的指标定义,如:高并发方面要求QPS 大于 10万;高性能方面要求请求延迟小于 100 ms;高可用方面要高于 99.99
我有一个大约有 108000 个三角形的网格,应该用 WebGL 渲染。 目前我不使用框架,只使用纯 WebGL。我已经通过 id 映射实现了对象识别,以便使用回调功能和基本的相机操纵器进行拾取。 现
我读过无数的帖子,无数次地重写过代码,我发现自己碰壁了。由于应用了 CSS scale3d 转换的容器,我试图克服在滚动页面时不使用 CSS 固定元素位置的限制。虽然我最新的解决方案有效,但它有时仍然
我正在开发一个嵌入式系统,它需要非常频繁地存储和检索数据。我预计每秒可能有 100 次写入和 10 次读取。数据将以突发而不是连续的方式到达。 我想使用 SQLite 来存储所有这些数据,但由于它是一
当前情况 在我们的一款 SPA Web 应用程序中,我们使用自定义跟踪器请求来跟踪各种用户操作,例如 cta 点击、页面导航 等,该请求将一些信息传递到后端使用 POST 请求。 问题现在,因为这些跟
我正在编写执行大量表查找的程序。因此,当我偶然发现 Data.Map (当然),以及 Data.HashMap 和 Data.Hashtable 时,我正在仔细阅读 Haskell 文档>。我不是散列
我正在评估我们的高性能电信应用程序的 BPEL 引擎,但性能似乎很差。我们评估了 Apache Ode、SunBPEL 引擎、Active BPEL 等。您知道任何更快的 BPEL 引擎实现或 C/C
我目前正在重写一个旧的 ASP\ASP.NET 应用程序。由于我无法完全重写,所以我需要分部分进行。现在我正在将代码库从 ODBC 升级到 .net 连接器。 有一个函数可以在用户每次访问页面时进行一
旁注:我正在使用 JQuery,但没有使用任何第三方表格组件(我现在也不能)。 我的问题是我应该能够显示很多(10000)条经过的消息——每秒都会有数百条新消息,它们应该被添加到底部。当我们达到 10
为了争论,假设我试图在 MySQL 表中表示一个非常简单的文件系统。请注意,这并不是我正在做的,它只是为问题的简单基础做准备。所以不要费心告诉我存储文件的更好方法。该表的架构如下: varchar p
我希望优化我使用python时遇到的大数据解析问题的性能。以防有人感兴趣:下面显示的数据是六种灵长类动物全基因组DNA序列比对的片段。 目前,我知道如何处理这类问题的最好方法是打开我的~250(大小2
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我需要用 Ruby 制作一个小应用程序,它将以不同颜色显示通过 TCP 接收的日志行。推荐用于此类应用的 GUI 框架是什么? 我应该在 Windows 和 Linux 上工作。 最佳答案 Shoes
我正在尝试编写一个非常简单的 Web 服务器来执行以下操作: 接收请求。 响应一个小文件;关闭连接。 处理请求数据。 换句话说,响应不依赖于请求信息,但请求信息仍然很重要。数据将被保留,然后用于分析。
我正在使用 WebSocket 协议(protocol)(通过 WebSocketSharp)开发 C# 游戏服务器。目前,每当用户登录游戏时,我都会创建一个 token 并将其添加到 Concurr
我正在处理应用程序的延迟敏感部分,基本上我会收到一个网络事件来转换数据,然后将所有数据插入到数据库中。在分析之后,我发现基本上我所有的时间都花在了保存数据上。这是代码 private void ins
我正在尝试将视频输出(帧序列)输出到任何 qt 可见小部件。一开始我认为 QLabel 就足够了......但我错了。转换为像素图对于大型图像的处理器来说过于过载:例如 1080p。 还有其他解决方案
我是一名优秀的程序员,十分优秀!