五天以来,我正在考虑如何在我的新项目中存储数据。我已经阅读了很多关于序列化或json_encoding的优缺点的文章,还有关于使用数千条记录搜索数据库的文章。这是问题所在。
考虑我正在制作游戏 - 我有数千个位置,每个位置都可能有一些对象。对象的数量是有限的,但我想每个位置可能有10-20个对象。每个对象都有一些属性(比如perks),有时需要检查,更新等等,所以我必须将它存储在db中。
我看到两个选项:
简单的数据库方式,使用第一个数据库规范化表单 - 将每个对象作为一行存储在数据库中,每个属性 - 在列中。我可以轻松检索数据,只需一个ID即可将其连接到特定位置。问题是数据库中可能存在(并且将会有)数千行 - 所有对象*都在位置上并且搜索它可能非常昂贵。如果将它乘以同时搜索数据库的玩家数量,则可以杀死数据库。
第二种方法是对当前loaction中的所有对象及其所有属性进行序列化或json编码(甚至内爆somhow)。我猜每个对象可能有100个属性*序列化的20个对象可能不是那么小的值数组。因此,2000(assoc key + int value)元素被序列化并保存在每个位置的一个字段中。数据库搜索要少得多 - 只需将id设置为主键并搜索它,但稍后我必须反序列化所有数据。它也可能很贵。
我知道我不在这里放任何代码(还没有任何代码)所以这是一个非常虚拟的问题,但我想知道你是否曾经检查过什么是更好的解决方案 - 在一个领域存储大量数据但是将其序列化或将它分散到db中多行。
希望您能分享您的经验:)
Kalreg。
答案 0 :(得分:1)
您需要第一种方法。
答案 1 :(得分:1)
关系数据库搜索非常快。如果你设置正确,它也非常灵活。因此编码过程将是最耗费时间的因素。 JSON的好处是服务器 - 客户端数据传输。就个人而言,我会使用久经考验的选项1,但希望尽可能多地缓存客户端数据,例如: HTML存储。
我还注意到你正在使用PHP。最简单的页面重新加载的AJAX方法就是你想要的,尽管我可能会过度阅读你的标签。