【发布时间】:2018-09-27 11:18:02
【问题描述】:
我正在做一个项目,我将存储对特定项目列表的每次点击。经过一些研究,我一直怀疑最聪明的解决方案是什么。
我的系统是建立在 PostgreSQL 数据库上的,我知道我会像这样存储点击:
id itemId userId ipAdress date
1 3 1 xx.xx.xx 01/01-2018
2 1 1 xx.xx.xx 01/01-2018
3 2 NULL xx.xx.xx 01/01-2018
4 2 NULL xx.xx.xx 01/01-2018
5 1 2 xx.xx.xx 01/01-2018
我的项目列表应该按点击次数排序。因此,查询可能看起来像这样,以通过点击对项目进行排序:
select i1.*, count(i1.id) as totalClicks from itemClicks ic1
left join items i1
on i1.id = ic1.itemId
group by ic1.itemId
order by totalClicks desc
所以这很好 - 至少在数据集没有很大的情况下。但在某一时刻,数据集中可能有数百万行。 According to this article by researchgate.net SQL 服务器进行聚合的速度要快得多,为什么我认为继续将数据存储在 SQL 服务器中是有道理的。 我选择 PostgreSQL 的原因(知道)是因为没有最大数据库大小,据我所知,它适用于大型数据库。
就这一点而言,我很乐意使用 MySQL (MariaDB)、PostgreSQL 和 MongoDB。最重要的是我从一开始就存储数据,而不会以缓慢的系统结束。 而且数据库最好是开源的。
我希望有人能给我一些反馈并告诉我我是否在正确的轨道上。
克雷利
【问题讨论】:
-
您的假设是有缺陷的:本文讨论了两种产品,一种是 MongoDB(一种 NoSQL 数据库),另一种是 SQL Server - Microsoft 的产品。这篇文章没有比较 NoSQL 和 SQL 数据库,而是从字面上比较了两种特定的产品——因此你不能把它应用到你最喜欢的选择上。
标签: database postgresql bigdata