我是服务器编程(一般编程)的新手,我正在开发一个应用程序。该应用程序将允许用户创建具有纬度 - 经度位置和时间和日期的游戏,以及将存储在服务器上的其他数据。他们还可以找到其他用户根据其位置创建的游戏。在给定时间之后,游戏被存档(因此它们只能通过游戏ID而不是位置来检索)。
此外,每个游戏都有一个唯一的数字ID,每个新创建的游戏都会有比前一个更大的ID号(所以数据按ID排序,无需排序),用户可以使用此ID找到游戏(例如,如果他们的朋友通过向他们发送ID来邀请他们)。
总结 - 用户可以通过邻近度或唯一ID查找数据,并且在给定的日期和时间(每个游戏具有单独的到期日期)之后,数据将被存档(因此只能通过ID检索)。
我的问题是:服务器应该如何存储这些数据?我所考虑的是这个,看起来效率很低 -
是否有任何类型的数据结构可以更有效地做到这一点?就此而言,我应该在哪种用户量上担心提高效率?
答案 0 :(得分:0)
我已经找到了解决方案。 (如果您将此作为参考,请注意我不是专业人士,这可能是一个糟糕的主意。)
-I'为每个Game对象存储一个单独的数据文件。它们以这样的方式存储,即在同一文件夹中永远不会有超过100个文件/文件夹,并且可以使用简单的程序生成的文件路径来检索它们。 (没有昂贵的搜索目录,因为每个文件的确切位置可以根据其唯一ID知道) - 内存数组(或ArrayList)的游戏ID(或者某种地图)尚未过期的游戏,按照它们何时到期的顺序排列。我不可能同时在内存中拥有超过一百万个,即使有这种荒谬的高估,它仍然只使用8个字节* 100万条目= 8兆字节的内存输出超过一千兆字节可用,所以即使考虑到存储它们的对象的开销,这也不成问题。 -Ditto for QuadTree-存储在内存中。