0

我有一个服务器-客户端应用程序,客户端可以在其中编辑存储在服务器端的文件中的数据。问题是文件太大而无法将其加载到内存中(8gb+)。连接的客户端每秒可能会调用大约 50 个字符串替换。所以复制整个文件并用新的替换指定的字符串是没有问题的。

我正在考虑将所有更改保存在服务器端的缓存中,并在达到一定数量的数据后执行所有替换。在达到该数据量后,我将通过以小块复制文件并替换指定部分来执行更新。

这是我想出的唯一想法,但我想知道是否可能有另一种方法或这种方法会遇到什么问题。

4

2 回答 2

2

当您有超过 8GB 的​​数据由多个用户同时编辑时,您将远远超出平面文件所能处理的范围。

您非常需要将此数据移动到数据库中。关于您“文件内容不适合数据库”的评论:对不起,但我不相信您。特别是关于“很多人可以编辑它”的评论 - 这是使用数据库的另一个原因。在文件系统上,一次只有一个用户可以对文件具有写访问权。但是数据库允许多个用户同时进行写访问。

当您打开一个新问题,告诉我们您的数据是如何准确结构化以及您的用例是什么时,我们可以帮助您提出一个数据库模式。

于 2012-09-28T12:51:16.393 回答
1

您可以对数据使用某种形式的索引(在单独的文件中)以允许快速访问这个巨大文件的相关部分(我们已经成功地对大文件(~200-400gb)进行了此操作,但正如菲利普所说您应该将该数据移动到数据库,特别是对于读/写访问。一些框架(如OSG)已经带有用于 3d 地形数据的数据库后端,因此您可以在那里查看它们是如何做到的。

于 2012-09-28T12:59:09.827 回答