我有一个名为 revisions 的活动记录表(如下图所示),它是为一个大型学习管理系统而构建的,它主要记录表格上的CRUD操作(例如谁在哪个对象上做了什么在什么时候)。
此表最多可包含3M数据记录。我想用PHP / Laravel在前端构建一个搜索功能。
现在我的问题是我应该考虑为具有数百万条数据记录的表格建立具有高性能的搜索功能,在代码级别,数据库级别上是什么,或者是第三方支持这类问题的东西?
我有使用PHP / Laravel,Python / Django,Ruby等构建系统的经验。但我从未遇到过这样的情况,处理数百万条数据记录。所以请记住我的知识/经验水平。我没有这个级别的经验。
注意:搜索将是一项高级搜索,使用户能够搜索不同的条件和参数,更改的对象,更改的对象,更改时间等。
如果我的问题仍然不清楚,请告诉我。
答案 0 :(得分:3)
我建议您查看https://www.elastic.co/products/elasticsearch并在保存到主数据库时将活动记录保存到其存储中。然后,您可以轻松搜索任何字段。 Elasticsearch可以存储无架构的JSON文档,如果您更喜欢SQL方式,还有另一个搜索引擎 - http://sphinxsearch.com/。
答案 1 :(得分:3)
将多个行插入表中没有问题。当您尝试在表上执行非平凡的SELECT时会出现性能问题。你提到"搜索&#34 ;;你将不得不限制用户'可以搜索。但至少要抨击他们可能想要搜索的内容。
你提到"搜索一个对象"但是我没有看到一个名为object的列。给定对象可能有多少行?你需要所有的行吗?还是选择的? (无论表大小如何,对象上的INDEX都可能使查询更有效。)
第三方软件有时会妨碍处理非常大的表格。当心。