javascript - MySQL对1列N°值或1列值的DB设计的建议

标签 javascript html mysql performance

我需要将本地项目移动到网络服务器,现在是时候开始在本地保存内容(用户进度和历史记录)。 主要思想是,Web 应用程序每 50 毫秒左右就会计算 8 个与正在使用该 Web 应用程序的用户相关的值。 我的问题是:

  1. 我应该使用 MySQL 来存储数据吗?目前我使用具有预定义格式的纯文本文件,例如:

    Option1,Option2,Option3
    Iteration 1
    value1,value2,value3,value4,value5
    Iteration 2
    value1,value2,value3,value4,value5
    Iteration 3
    value1,value2,value3,value4,value5
    ...
    
  2. 如果是这样,我应该使用 5 个(或将来更多)列(每个值一个)及其 ID 作为迭代吗?请记住,每次 session 我将进行 5000 多次迭代(大约 4 分钟)

  3. 每个用户每天可以进行 10-20 个 session 。

  4. 数据库会变得太大而降低效率吗?

  5. 由于样本速度,每 50 毫秒调用一次数据库对我来说似乎是一个问题(特别是因为我必须大量动画网页)。我想知道是否最好实现一个“保存”按钮,一次性将所有 5000 多个值填充到所有数据库中。如果是这样,最好的方法是什么?

  6. 将 *.txt 直接保存在网络服务器的文件夹中会更好吗?类似于 DB/usernameXYZ/dateZXY/filename_XZA.txt 。对我来说是的,省力多了。如果是这样,哪个函数允许我这样做(可能是 JS/HTML)。

最佳答案

规则很简单,并在此处的许多问答中进行了讨论。

除了极少数异常(exception)......

  • 不要有多个具有相同架构的表。 (例如,每个用户一张 table )
  • 不要跨列展开数组。使用另一个表。
  • 不要将数组作为逗号放入单个列中。异常(exception):如果您从不使用 SQL 查看列表中的各个项目,那么它可以是不透明的文本字段。
  • 警惕 EAV 架构。
  • 批量INSERT或使用LOAD DATA。 (比每次插入一行加速 10 倍)
  • 如果索引正确,十亿行表的性能就很好。 (问题:可能无法提供足够的索引。)
  • 图像(如您的 .txt 文件)可以存储在文件系统中或数据库的 TEXT 列中 - 没有通用的答案。 (也就是说,需要更多详细信息来回答您的问题。)

“计算与用户相关的8个值”——模糊。一些可能性:

  • 动态计算“排名”既昂贵又耗时。
  • 摘要数据最好预先计算
  • 最好的近似值是巨大的数字(例如搜索点击率)
  • 根据出生日期计算年龄 - 很简单
  • 当然,获取该用户表中的数据是微不足道的
  • 计算“ friend ”的数量 - 这取决于情况
  • 等等

关于javascript - MySQL对1列N°值或1列值的DB设计的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40233693/

相关文章:

html - 如何制作CSS网格的内容包装器 "on top"

mysql - 使用node.js在mysql中插入大卷数据时出错(错误代码: 'ECONNRESET' )

php - 将 BLOB 插入 Oracle 时出错

javascript - 如何通过从 'include(' menu.html 上的菜单中单击 Li 将 HTML 页面加载到 DIV')'

javascript - 如何返回值而不是 console.log

javascript - 为什么时间格式会更改为 00 :00:00 time in UTC 24 hour format to 24:00:00

javascript - 使用 HighCharts 动态更新同一图表上的两个系列

javascript - 测试 WebGL 演示时出现黑屏

mysql - SQL对多个字段进行计数

javascript - JQ 或 JS : Prevent "a" tag to change url #hash