在服务器端保存大量数组的最佳方式


Best way to save a massive array on server side

我目前正在做一个HTML5/Javascript的网页,用户可以记录一段时间内滑动条的变化值。例如,当用户单击Record时,计时器将启动,并且每次用户移动滑块时,其值将保存在数组中。当用户停止录制并播放时,所有滑块都会在录制时"播放"。我将值存储在数组中,就像这样:

array[3]: {timeStamp, idSlider, valueSlider}

数组实际上可以变得相当大,因为用户可以在不丢失前一个的情况下记录已经记录的设置,这允许用户为相同的时间戳更改多个滑块。

我现在想要能够保存这个数组某处(在服务器端),所以用户可以回到网站以后,只是加载其记录的设置,但我不确定最好的方法来做到这一点。

我正在考虑一个数据库,但不确定这是否会有点慢,从服务器保存和加载,加上我的数据库容量相当小(在我的OVH服务器上大约25 Mo)。我在考虑可能平均保存800个条目。

也许在一个文件(XML ?),但我不知道如何保存在我的服务器端…

任何其他的想法是受欢迎的,因为我有点卡在这个。

谢谢,抱歉有任何英文错误,欢呼,垫

选择serialize()json_encode(),将其保存为长文本数据库记录。

  • http://us.php.net/serialize
  • http://us.php.net/json-encode
  • http://dev.mysql.com/doc/refman/5.0/en/blob.html

我认为800没有你想象的那么大。您可以将其保存到数据库并使用JSON传输。我认为数据库应该非常高效,不会浪费大量存储,但这取决于您如何设置表。例如,不要使用char()列。

要查看哪个使用更多或更少的存储,您可以计算1000个条目将占用多少空间,然后将它们放入数据库中,并查看它使用了多少空间以及浪费了多少空间。

如果你真的在处理大量的项目,那么网络性能可能会成为你的第一个瓶颈。对于加载,我会将javascript流式传输到浏览器,这样浏览器就不必将整个内容加载到内存中。此外,对于发送,您可能希望创建可管理的块,每次可能有1000个,并在这些块中发送它们。但是,这是假设你在处理更多的数据

您可以尝试将整个json对象作为纯文本存储在用户特定的文件中。这将使服务设置非常容易,因为它将是简单的json,简单需要评估。

这似乎有点不正统。你说的800个条目是指1. id: 0,时间戳:XXXXXXXXXXXXX, idSlider: X等2. id: 1,时间戳:XXXXXXXXXXXXX, idSlider....

还是800个用户条目?因为你也可以将整个对象保存在数据库中,这样你就不用执行大量"昂贵"的查询了。

如果您更关心存储大小而不是读写性能,您可以将数组编码为json字符串,使用zlib库压缩并保存为文件

这是MongoDB的一个完美用例。