【发布时间】:2012-03-07 03:57:44
【问题描述】:
我的应用程序的一部分包括歌曲的音量自动化。
音量自动化按以下格式描述:
[[0,50],[20,62],[48,92]]
我认为这个数组中的每个项目都是一个“数据点”,第一个值包含歌曲中的位置,第二个值包含 0-100 范围内的音量。
然后,我获取这些值并在客户端执行一个函数,用“虚拟”数据点插入这些数据,以创建贝塞尔曲线,从而在播放音频文件时实现平滑的音量转换。
但是,需要允许用户将此自动化保存到数据库中以供日后调用。
数据点可以是无限的(尽管实际上不应真正超过 40-50 左右,大多数小于 10)
另外我应该如何处理数据?它应该按原样存储在文本字段中吗?还是我应该事先以某种方式对其进行处理以获得最佳效果?
在 MySQL 中最好使用哪种数据类型来存储数组?
【问题讨论】:
-
您在应用中使用的数据类型是什么?它是一个字符串、一个数组还是一个对象?我从“按原样在文本字段中”收集来表示您在内部将点表示为字符串,但我可能读错了。
-
为什么不直接创建多个 INT 类型的字段?例如volume_min、volume_max、song_position
-
如果您不需要执行在该数组中搜索值的查询,您可以简单地使用
text字段并存储数组的序列化版本(您在此处发布的方式可以,[[0,50],[20,62],[48,92]]). -
它是一个数组。 @Lorenzo - 你是对的,我不需要对这些数据执行查询。每个卷自动化阵列将在表中具有与其关联的用户 ID、歌曲 ID 和名称。
-
您是否打算在数据库中对数据执行任何计算?如果没有,将其存储为文本(或者可能是 JSON,按照您的格式)然后将其读回内存中的适当对象是没有害处的。