iOS 上的解析平台:大型多对多的关系、联接或数组?
Posted
技术标签:
【中文标题】iOS 上的解析平台:大型多对多的关系、联接或数组?【英文标题】:Parse Platform on iOS: Relations, Joins, or Arrays for Large Many-to-Many? 【发布时间】:2020-08-07 00:40:39 【问题描述】:在 ios 上的 Parse.com API 参考中,非常清楚何时使用不同类型的一对多关系,具体取决于多方的预期大小。
但是当双方都可能非常大时,我发现使用哪种多对多关系不太清楚。
就我而言,我有一个Charity
对象,我的Users
可以为它做出少量(通常是一美元)的贡献——因此每个User
都可以做出数千个这样的贡献,每个Charity
可能有成千上万的Users
为它做出贡献。
为这类事情列出的多对多选项是解析关系、连接表和数组,文档对此进行了解释:
当关系可靠地包含少于 100 个引用时,应使用数组,这是非常明确和有用的指导,我不应该使用数组。 文档说可以使用解析关系,例如,将Books
与多个Authors
和Authors
与多个Books
连接——在这种情况下,给定的Book
不太可能结束100 个Authors
,而Author
很少有超过 100 个Books
--所以不清楚这是否适合 双方都可能非常大,就像我的情况一样。李>
文档说,当额外的元数据应该附加到每个关系时,应该使用连接表,所以一方面,我目前没有明确的需要,另一方面,文档似乎没有甚至提及多对多关系的每一方的大小如何或是否重要。
在没有任何其他信息的情况下,看起来我应该使用 Join Tables,但这只是因为文档并不暗示我不应该,而不是因为文档说的原因我应该。
这似乎是一个站不住脚的理由。
任何人都可以提供任何指导,我将不胜感激。
【问题讨论】:
【参考方案1】:在幕后,当您使用 Relation 时,Parse Server 会自动为您创建一个联合表并提供一些 API,以便轻松管理和获取其数据。所以,就性能而言,应该非常相似。
Relation 的缺点是无法向它创建的“联合表”添加新字段。因此,例如,如果您需要存储每个用户喜欢的慈善机构,那么 User 和 Charity 之间的关系将是一个很好的选择,因为您只需要存储该关系存在而不需要存储任何额外的信息。
另一方面,如果您需要存储每个用户对每个慈善机构所做的捐赠,我会创建一个名为 Donation 或 UserCharity 的联合表,其中包含一个指向 User 类的指针,一个指向 Charity 类的指针,以及捐赠的价值。在这种情况下,Relation 不合适,因为您需要存储捐赠值。
【讨论】:
这是非常好的额外信息和解释,谢谢。所以如果我理解正确的话,关于联合表的事情是它们在功能上就像任何其他 Parse 类,这意味着存储大量它们不应该影响性能,而不是存储大量任何对象其他类。所以基本上建议是使用数组以外的任何东西!我有这个权利吗? 是的。就是这个想法!以上是关于iOS 上的解析平台:大型多对多的关系、联接或数组?的主要内容,如果未能解决你的问题,请参考以下文章