【问题标题】:Incremental/decremental DB design增量/减量 DB 设计
【发布时间】:2017-10-30 10:10:06
【问题描述】:

我的问题是关于数据库的良好设计,该数据库将保存有关可以每 X 秒递增或递减的项目列表的信息。想法是优化它,这样就不会出现重复的信息。

例子:

我有一个脚本每 5 秒运行一次,收集有关连接在 WiFi 网络中的计算机的信息,我想将此信息存储在数据库中。如果扫描n中的用户与扫描n-1中的用户相同,我不想在数据库中保存任何内容。

是否有任何特定的 DB 设计可用于存储有关连接到网络的新 wifi 客户端或离开它的现有 wifi 客户端的信息?

什么样的数据库更适合这种增量/减量用例?

谢谢

【问题讨论】:

  • 你能澄清你的问题吗?为什么认为任何常规数据库设置都无法处理您的使用情况?此外,您同时标记了 MySQL 和 Mongo,它们是非常不同的技术。您打算使用 SQL 还是 NoSQL?
  • 您将使用什么来识别您的 WiFi 客户端?那是你可以用作桌子钥匙的东西吗?然后你只需要运行一个 insert-on-duplicate-key-update 操作就可以了:dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
  • @TimBiegeleisen 问题是关于这个问题的最佳数据库是什么,所以我对 SQL 和 NoSQL 持开放态度。
  • @JosepValls 我需要跟踪不再在网络中的用户,因此您的解决方案不起作用

标签: mysql mongodb list database-design database


【解决方案1】:

如果这类似于“赞成票”或“喜欢”,那么一条建议是使用“平行”表来仅保存计数器和项目的 ID。这将在执行递增/递减时最大限度地减少干扰(锁定)。

同时,如果您需要一个项目的其余信息,加上柜台,那么JOIN 两个表就足够简单了。

如果每秒的增量/减量少于十几个,那也没关系。

【讨论】:

  • 这不像“赞成票”。正如我在问题中所说,跟踪用户连接和断开 wifi 网络的时间。我们可以假设key是连接或断开设备的MAC地址。
  • 你有用于 cron 作业的暂定 SQL 吗?
猜你喜欢
  • 2018-09-02
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多