您的大型网络应用程序有多大?
将事件记录为XML blob应该可以工作,并且某些数据库(例如SQL Server)可以让您直接查询该XML。但是,这些查询的性能很糟糕。
在数据库中进行事件日志记录之前,您应该计算出每秒要创建多少条记录。 如果数量很大,它会给数据库带来严重的负担,并可能影响您的整体应用程序性能。另外,一旦你累积了大量的记录,查询数据将永远持续(并且在这个过程中杀掉数据库性能)。聚合数据更糟糕 - 关系数据库在聚合方面效率不高。
克里斯的上述建议对于小型数据库很适用,但不会扩展,因为您的查询必须使用连接。解除数据标准化可能会更好。
即使您的应用程序没有获得足够的流量,您现在仍然担心此问题,请记住,由于上述原因,记录到数据库的事件无法很好地扩展。
Concreate建议:
如果你没有那么多的流量,并决定登录到数据库,这样做是为了一个独立的模式,这样它会更容易让你将它移到一个单独的数据库服务器,以便从生产数据库中卸载它。
如果您决定将事件记录为xml,请考虑使用关系数据库是否有用处 - 如果无法高效查询,那么简单的日志文件将更简单。当然,当然你必须弄清楚如何处理这些日志数据,但是对于不经常/简单的查询,使用grep,awk等编写一些脚本会让你有一个非常长的路要走。
通常通过(非常)大规模应用现今所用的方法记录到的文件,然后在运行使用分析(聚集)地图降低,例如在hadoop上。
感谢克里斯 - 欣赏模式和解释。 – Guy 2011-03-24 18:32:12