您能否牺牲性能来获得NFS上Sqlite的并发性?
我需要编写一个存储在网络文件系统上的客户端/服务器应用程序。我很清楚这是一个否定,但我想知道我是否可以牺牲性能(Hermes:“这次我指的是真正的斜杠”)来防止数据损坏 我的想法大致如下:您能否牺牲性能来获得NFS上Sqlite的并发性?,sqlite,Sqlite,我需要编写一个存储在网络文件系统上的客户端/服务器应用程序。我很清楚这是一个否定,但我想知道我是否可以牺牲性能(Hermes:“这次我指的是真正的斜杠”)来防止数据损坏 我的想法大致如下: 每次调用write时,在系统中创建一个单独的文件(如果需要,我愿意为每个连接执行此操作) 将文件名存储为当前毫秒时间戳 检查该时间或更早的文件是否存在 如果存在相同的,请等待0到10毫秒之间的随机时间,然后重试 当文件是最早的时间戳时,执行操作,删除文件锁,否则等待10毫秒,然后重试 如果文件持续时间超过一分
- 这必须存在于国家科学基金会上,为什么不重要,因为这不是我的决定(看起来我在这一点上不够清楚)
- 系统上的读写器数量将在5到10之间,所有读写器同时进行,但很少在同一记录上进行
- 只有客户端和共享内存空间,没有办法在上面安装服务器,或者使用基于服务器的RDM,如果有,显然我会在纽约一分钟内完成
- 数据量最初约为70MB(纯文本,未压缩),然后以合理但不惊人的速度连续增长
- 我会接受这样一个回答:“不,您不能通过牺牲性能来获得NFS上合理保证的并发性”,如果它包含对原因的详细而合理的解释的话
是的,有更好的方法。不要使用NFS来执行此操作 如果您愿意在每次发生更改时创建一个新文件,我希望您有少量数据和/或很少发生更改。如果数据很小,为什么要使用SQLite呢?为什么不让文件有节点名和时间戳呢
我认为,如果你能多描述一下你试图解决的真正问题,会有所帮助。例如,如果你有多个读者和一个作者,还有其他方法。是的,有更好的方法。不要使用NFS来执行此操作 如果您愿意在每次发生更改时创建一个新文件,我希望您有少量数据和/或很少发生更改。如果数据很小,为什么要使用SQLite呢?为什么不让文件有节点名和时间戳呢
我认为,如果你能多描述一下你试图解决的真正问题,会有所帮助。例如,如果您有多个读者和一个作者,那么还有其他方法。您所说的“并发”是什么意思?你的意思是“多个读卡器/多个写卡器”,还是“多个读卡器/一个写卡器,延迟有限”?你说的“并发”是什么意思?你的意思是“多个读者/多个作者”,还是“多个读者/一个作者,延迟有限”?谢谢你的回答,NFS是不可协商的,数据不是微不足道的小数据,我将编辑问题以添加更多内容。谢谢你的回答,NFS是不可协商的,数据不是微不足道的小,我将编辑问题以添加更多内容。