如何存储和同步大的字符串列表

时间:2010-04-07 23:55:02

标签: mysql database

我在Windows上的SQLExpress中有一个大型数据库表,其中包含一个特定的感兴趣字段“代码”。

我在Linux上有一个带有MySQL的Apache Web服务器。 Linux机器上的Web应用程序需要访问所有代码列表。它将使用列表的唯一方法是检查给定代码是否存在。

将Linux服务器调用到Windows服务器是不切实际的,因为Windows服务器位于NAT的办公室互联网连接后面,并且可能无法始终访问。我设置了它,以便Windows服务器通过简单的HTTP POST请求将代码列表推送到Web服务器。但是,此时我还没有在Linux机器上实现代码存储。

我应该将它们存储在具有单个字段“代码”的MySQL表中吗?然后我得到快速索引查找O(1),但我认为同步将是一个问题 - 给定更新列表从Windows框中推出的代码,我如何以最佳方式将列表与数据库同步? TRUNCATE,然后是INSERT?

我应该将它们存储在一个平面文件中吗?然后我有O(n)查找时间而不是O(1)。另外还有额外的常量时间开销,因为我将在Ruby中处理文件。但是,同步很简单 - 只需替换文件即可。

更新

另一种方法:滥用文件系统: 给定一个代码,比如“ABCDEF”,生成一个类似“A / AB / ABC / ABCDEF”的路径,并在那里“触摸”一个文件。我想我最喜欢这种方法。 这是个坏主意吗?

1 个答案:

答案 0 :(得分:1)

首先,如果您的网络应用具有持久性,只需将代码添加到当前持久性存储中即可。 (简单)

但是,它实际上取决于代码列表的大小。由于您可以对代码进行HTTP POST,因此在保存到平面文件时,它似乎不会是千兆字节。

因此,如果您的平面文件进入某些MB(或数千个代码),请转到MySQL。在我看来,任何低于1MB的东西都是使用数据库服务器的过度杀伤。

所以,如果你的档案很小:把它弄平。