投票系统的数据库设计

时间:2012-04-07 16:56:08

标签: mysql mongodb postgresql redis database

我需要在系统中存储项目(通过id)的投票。我估计它将有大约500万张选票。 每次投票包括:

  • 投票项目的ID
  • userdata1
  • userdata2
  • 日期时间

“userdata”字段将用于在投票结束时检测作弊者。在投票过程中,所有投票都应该登记。

我需要能够检索两种信息:

  • 大约每1分钟)每个“投票项目的ID”有多少票
  • 大约每1小时)在对“userdata”字段应用一些过滤器之后,每个“投票项目的ID”有多少票(就像在某个日期时间间隔中必须是唯一的,或类似的东西)...我不希望能够以SQL查询的形式编写这些过滤器......我想迭代所有~5百万票并创建一个新的表/数据结构,它将获得结果,然后将其返回给应用程序

投票的插入不应该是一个大问题(它大约是每秒2,所以我猜任何数据库都可以很好地处理它)

我倾向于像mongoDB这样的东西,因为迭代DB并创建过滤器需要“脚本”。但也许它可以通过SQL在存储过程中解决,或者键值(Redis?5mi票应该适合小于2 GB的RAM)DB?

1 个答案:

答案 0 :(得分:2)

我认为图形数据库是您需要的。 我可以推荐OrientDB(http://www.orientechnologies.com/)。这是一个非常酷的全功能开源图形数据库。它是用Java编写的,但您可以使用不同的客户端驱动程序。 1.0稳定释放几乎存在(<2周)。 如果您想尝试一下,可以免费在云中使用它(http://www.nuvolabase.com/),因此您无需安装和配置它。 它是架构完整,架构混合和架构较少,支持图形,sql,集群等等,您可以根据需要灵活地建模数据。