用于快速数据访问和报告的mongodb文档格式

时间:2012-10-18 13:12:00

标签: mongodb format reporting document

哪种存储大数据的方式对于快速搜索和报告使用会更有效?

{ website: "google.com", 
  description: "google is a search engine", 
  vistits: [
    {date: 1334565455, referrer: "http://bing.com"}, 
    {date: 1334565455, referrer: "http://bing.com"},
    {date: 1334565455, referrer: "http://bing.com"},
    {date: 1134565455, referrer: "http://bing.com"},
    {date: 1334542455, referrer: "http://bing.com"},
    {date: 1334555455, referrer: "http://bing.com"},
    {date: 1334575455, referrer: "http://bing.com"},
    {date: 1324565455, referrer: "http://bing.com"},
    {date: 1334565455, referrer: "http://bing.com"},
]}

或使用传统方式将访问权限存储在具有网站ID作为参考的单独表格中?

1 个答案:

答案 0 :(得分:2)

这取决于。如果您从某些网站访问很多,那么这些文档的增长速度会非常快。最终,它们太大而无法加载。

另一方面,如果您的报告工具始终需要加载所有访问,则将它们拆分为多个文档会降低性能。

尝试平衡两个目标。例如,如果数组visits变得太大,则创建另一个文档并将其文档ID保存为continuedIn。这样,您可以限制每个文档的大小,但仍然可以将大量信息保存在一起。

如果您的报告工具无论如何聚合,您还可以尝试按天分组访问(即一个文档包含某一天的所有访问)。这样,文件可以增长,但它们不会永远增长 - 只有一天。

最后,你可以在N次访问后停止录制(比如100'000)。知道您是否有100001次或100015次访问有什么意义?

注意:根据您所在的位置,只有获得每位访客的书面许可,才能在较长时间内记录IP地址和推荐人信息。即使在您所在的国家/地区合法,某些访问者也会对跟踪它们的网站敏感。当然,他们对此无能为力。除了停止访问您,配置他们的Web浏览器以停止与您的服务器通话或在博客和论坛中发布负面评论。