五天以来,我一直在考虑如何在新项目中存储数据。我已经阅读了很多有关序列化或json_encoding的优缺点的文章,也有关于搜索具有数千条记录的数据库的文章。这是问题所在。
考虑我正在做一个游戏-我有成千上万个地点,每个地点可能都有一些物体。对象的数量是有限的,但我想每个位置可能有10-20个对象。每个对象都有一些属性(例如特权),有时需要检查,更新等等,因此我必须将其存储在db中。
我看到两个选择可以做到这一点:
简单的数据库方式,使用第一个数据库规范化形式-将每个对象存储为数据库中的一行,将每个属性存储为列。我可以轻松地检索数据,只需一个ID即可将其连接到特定位置。问题在于,db中可能存在(并且将会有)数千行-所有对象*大量的位置,并且搜索它的时间可能非常昂贵。如果将其乘以同时搜索数据库的玩家数量,则可能杀死DB。
第二种方法是序列化或json编码(或什至内爆)其具有所有属性的当前位置中的所有对象。我猜每个对象可能具有100个属性*序列化的20个对象可能不是很小的值数组。因此,将2000个(关联键+ int值)元素序列化并保存在每个位置的一个字段中。数据库的搜索要少得多-只需将id设置为主键并进行搜索,但是稍后我必须反序列化所有数据。它也可能很昂贵。
我知道我没有在此处放置任何代码(尚无代码),所以这是一个非常虚拟的问题,但是我想知道您是否曾经检查过哪种更好的解决方案-将大量数据存储在一个文件中,但是将其序列化或将其序列化分散到db中的多行。
希望您能分享您的经验:)
卡尔雷格。
关系数据库搜索非常快。如果设置正确,它也非常灵活。因此,编码过程将是最耗时的因素。JSON的好处是服务器-客户端数据传输。就我个人而言,我将使用可靠的选项1,但希望在客户端尽可能多地缓存数据,例如HTML存储。
我还注意到您正在使用PHP。您想要的是一种页面重载最少的AJAX方法,尽管我可能过度阅读了您的标签。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句