1

哪种结构在主机服务器、平面文件或数据库 (mysql) 上返回更快的结果和/或更少的负担?

假设许多用户(100 个用户)同时查询文件/db。搜索涉及针对静态文件/数据库的模式匹配。文件有 50,000 行唯一的行(相同的数据类型)。可能有很多比赛。没有写入文件/db,只是读取。

如果主文件正在使用,是否可以复制文件/数据库并编写逻辑开关以使用备份文件/数据库?

哪种语言最适合这种结构类型?Perl for flat 和 PHP for db?

补充资料:

如果我想找到所有城市的名称中都有“cis”模式。使用正则表达式或字符串函数哪个更好/更快?

请推荐一个策略

TIA

4

2 回答 2

2

我非常喜欢简单的解决方案,因此更喜欢——对于简单的任务——平面文件存储。具有索引功能的关系数据库对任意正则表达式模式根本没有多大帮助,文件系统的缓存确保这个相当小的文件无论如何都在内存中。我会走平面文件+ perl路线。

Edit: (taking your new information into account)如果它真的只是在一个已知属性中查找子字符串,那么使用全文索引(数据库提供)将对您有所帮助(取决于应用的索引类型),并且可能提供适合您的简单且合理快速的解决方案要求。当然,您可以自己在文件系统上实现索引,例如使用Suffix Tree的变体,这在速度方面很难被击败。

尽管如此,我还是会采用平面文件路线(如果它符合您的目的,请查看awk),因为如果您已经开始实施它,那么您已经完成了;)此外,我怀疑您谈论的用户数量不会让系统感受到差异(无论如何,您的 CPU 大部分时间都会感到无聊)。

如果您不确定,请尝试一下!实现该 regex+perl 解决方案,如果您知道 perl,则需要几分钟,循环 100 次并使用time. 如果它足够快,请使用它,如果不是,请考虑另一种解决方案。您必须记住,就现代计算而言,您的 50,000 条唯一行确实是一个很小的数字。(与此比较:Optimizing Mysql Table Indexing for Substring Queries

HTH,
亚历山大

于 2010-05-22T09:07:35.440 回答
0

根据您的查询和数据看起来如何,像LuceneSphinx这样的全文搜索引擎可能是一个好主意。

于 2010-05-22T19:11:27.850 回答