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

标签 mysql database

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

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

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

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

我是否应该将它们存储在一个平面文件中?这样我的查找时间为 O(n) 而不是 O(1)。此外还有额外的恒定时间开销,因为我将在 Ruby 中处理文件。但是,同步很容易 - 只需替换文件即可。

更新

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

最佳答案

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

但是,这实际上取决于您的代码列表的大小。由于您能够通过 HTTP POST 代码,因此保存到平面文件时它似乎不会有 GB 大小。

因此,如果您的平面文件有几 MB(或几千个代码),请选择 MySQL。在我看来,任何小于 1MB 的东西都不足以使用数据库服务器。

所以,如果你的文件很小:把它弄平。

关于mysql - 如何存储和同步一个大的字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2596685/

相关文章:

mysql - Chef 客户端在处理 MySQL Recipe 期间出现错误

mysql - Eloquent : "WHERE (equals statement) AND (LIKE statement)"

iPhone App 无法正常复制?数据库文件仅适用于临时或应用程序商店分发且不处于开发模式

python - 在 Django 中存储 5 分制的最有效方法

database - 删除超过 60 分钟的 Elequent 记录

java - 在 sqlite 数据库中插入信息不起作用

mysql - 使用 Join 更新 Codeigniter

具有多个左外连接的 Mysql 案例

mysql - 在 MySQL 上设置复制,MySQL 无法启动

android - 如何将日历数据存储在数据库中