gpt4 book ai didi

php - 序列化/json_encode 到一个字段或将原始数据保留在数据库的多个字段中?

转载 作者:行者123 更新时间:2023-11-29 06:42:09 25 4
gpt4 key购买 nike

五天以来,我一直在思考如何在我的新项目中存储数据。我已经阅读了很多关于序列化或 json_encoding 的优点和缺点的文章,还有关于用数千条记录搜索数据库的文章。这就是问题所在。

假设我正在制作游戏 - 我有数千个位置,每个位置都可能有一些对象。对象的数量是有限的,但我猜每个位置可能有 10-20 个对象。每个对象都有一些属性(如特权),有时需要检查、更新等,因此我必须将其存储在数据库中。

我看到两个选项:

  • 简单的数据库方式,使用第一个数据库规范化形式 - 将每个对象作为一行存储在数据库中,将每个属性存储在列中。我可以轻松地检索数据,只需一个 ID 即可将其连接到特定位置。问题是 db 中可能有(并且将会有)数千行 - 所有对象 * 位置的数量并且搜索它可能在时间上非常昂贵。如果将它乘以同时搜索数据库的玩家数量,它可以杀死 DB。

  • 第二种方法是对当前位置中的所有对象及其所有属性进行序列化或 json 编码(甚至内爆某种方式)。我猜想每个对象可能有 100 个属性 * 20 个序列化的对象可能不是那么小的值数组。所以 2000 (assoc key + int value) 个元素序列化并保存在每个位置的一个字段中。数据库搜索要少得多——只需将 id 设置为主键并搜索它,但稍后我必须反序列化所有数据。它也可能很昂贵。

我知道我没有在这里放任何代码(目前还没有)所以这是一个非常虚拟的问题,但我想知道你是否检查过什么是更好的解决方案 - 在一个文件中存储大量数据但将其序列化或将其分散到多行的数据库中。

希望你能分享你的经验:)

卡尔雷格。

最佳答案

关系数据库搜索速度快得离谱。如果设置正确,它也非常灵活。所以编码过程将是最耗时的因素。 JSON 的好处是服务器-客户端数据传输。就我个人而言,我会使用久经考验的选项 1,但希望在客户端缓存尽可能多的数据,例如HTML 存储。

我还注意到您使用的是 PHP。页面重新加载最少的 AJAX 方法是您想要的,尽管我可能过度阅读了您的标签。

关于php - 序列化/json_encode 到一个字段或将原始数据保留在数据库的多个字段中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20819970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com