我正在运行一个使用mysql数据库的crm应用程序.我的应用程序在mysql中生成大量数据.现在我想给我的客户一个报告部分,管理员可以在其中查看实时报告,他们应该能够实时过滤.基本上我希望我的数据尽可能快地实时切片和切块.我已经使用mysql和php实现了报告.但是现在由于数据太多,查询需要花费太多时间而且页面无法加载.经过几次阅读后,我遇到了几个词,如Nosql,mongoDb,cassandra,OLAP,hadoop等,但我很困惑,可以选择.是否有任何机制可以将我的数据从mysql传输到nosql,我可以运行我的报告查询和服务我的客户保持我的mysql数据库不是这样的?
使用哪种数据库/数据存储技术进行报告并不重要:您仍然需要设计它以有效地提取所需的信息.
通过从MySQL切换到MongoDB或其他可扩展的键/值存储系统之一来提高性能就像通过建立铁路解决行人交通拥堵一样.它需要做很多工作才能帮助解决问题.我建议你先尝试在MySQL中更好地工作.
首先,您需要仔细查看报告系统中的哪些SQL查询导致问题.您可以通过添加索引或进行其他重构来优化其性能.这应该是你迈出的第一步.MySQL的查询日志很慢.看它.
其次,您可以向MySQL添加资源(RAM,更快的磁盘等),并且您可以调整它以获得更高的性能.有一本名为High Performance MySQL的书,为这样做提供了一种合理的方法.
第三,许多需要在繁忙的应用程序中添加报告功能的人使用MySQL复制.也就是说,它们配置一个或两个从MySQL服务器以接受来自主服务器的所有数据的副本.
http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html
然后,他们使用从服务器或服务器来运行报告查询.奴隶通常在主人后面几秒或几分钟(也就是说,他们稍微过时了).但它通常足以让用户感受到实时报告的错觉.
请注意,如果您使用MongoDB或其他技术,您还必须复制数据.