2015-10-29 131 views
1

我有一个活动记录表,名为修订版(显示在下图中)为大型学习管理系统构建,主要记录表格上的CRUD操作记录(例如谁在什么时间做了什么对象)。处理MySQL和PHP/Laravel中的数百万条数据记录

revisions table

此表最多可包含数据的3M记录。我想在PHP/Laravel的前端为此构建一个搜索功能。

现在我的问题是,我应该考虑什么东西建立搜索功能与表高性能的数以百万计的数据的记录,什么都在代码级,数据库级的东西,还是有第三方的东西支持这些问题?

我有用PHP/Laravel,Python/Django,Ruby等构建系统的经验。但是我从来没遇到过像这样的情况,处理数百万条记录的数据。所以请记住我的知识/经验水平。我没有这方面的经验。

注:搜索将是一个高级搜索,使用户能够使用不同的标准和参数,它改变了对象,谁也改变了它,当它改变搜索等

让我知道如果我的问题还不清楚。

+0

虽然你的问题很清楚,但它既非常广泛,也会吸引以意见为基础的答案,使其成为本网站的主题。我正在投票结束它。 –

+1

这是一个有点宽泛的问题。你能解释我可以问哪里? –

回答

3

我建议您查看https://www.elastic.co/products/elasticsearch,并在保存到主数据库时将活动记录保存到其存储空间。那么你可以轻松搜索任何字段。 Elasticsearch可以存储一个模式免费的JSON文档,如果您更喜欢更多的SQL方式,还有另一个搜索引擎 - http://sphinxsearch.com/

+0

因此,如果我使用elasticsearch,CRUD操作需要在两者上完成?我的MySQL DB和Elasticsearch实例? –

+0

是的。 Laravel有特殊的模型监听器http://laravel.com/docs/5.1/eloquent#events,因此当您更改基础模型对象时,您可以轻松地在其他存储区中CRUD数据 – lifekent

3

插入一个zillion行到表中没有问题。当您尝试在表上执行不重要的SELECT时,会出现性能问题。你提到“搜索”;你将不得不限制'用户'可以搜索的内容。但至少可以刺他们可能想要搜索的东西。

您提到了“搜索对象”,但我没有看到名为object的列。给定对象可能有多少行?你需要所有的行吗?或选定的? (无论表的大小如何,对象上的INDEX都可能使查询更加高效。)

第三方软件有时妨碍处理真正大的表。谨防。

相关问题