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

问题描述:

我有一个SQLExpress在Windows上的大型数据库表,其中有一个特定的代码字段。如何存储和同步一个大的字符串列表

我在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中处理文件。但是,同步很简单 - 只需替换文件即可。

UPDATE

另一种方法:滥用文件系统:给定一个代码 ,说 “ABCDEF”,产生类似 “A/AB/ABC/ABCDEF” 和 '触摸' 的文件的路径那里。我认为我最喜欢这种方法。 这是一个坏主意吗?

+0

>>然后我得到快速索引查找O(1) - nope,mysql索引查找开销O(log2 N) – zerkms 2010-04-08 00:00:21

+0

哦,真的吗?我认为这将是一个O(1)哈希查找。我可能是错的。 – Joel 2010-04-08 00:22:36

首先,如果您的Web应用程序具有持久性,只需将代码添加到当前的持久性存储区。 (更简单)

但是,它真的取决于你的代码列表的大小。由于您可以通过HTTP POST代码,因此在保存到平面文件时,它看起来不会超过千兆字节。

因此,如果你的平面文件进入一些MB(或成千上万的代码),去MySQL。在我看来,任何小于1MB的内容都是使用数据库服务器的矫枉过正。

所以,如果你的文件很小:使它变平。