海量数据存储数据库:在数据库中存储对象(object store database)

我有很多对象,每个对象可以有许多不同类型的属性。很多属性重叠,例如,许多对象具有属性“名称”。由于有许多类型的对象,如果有一个表为每组具有相同属性的对象构建,它将需要很多表。

目前我正在使用 mysql,它是这样存储的。

object_id|attribute_id|data

有几个这样的表,不同的表有不同类型的数据。例如,在 Integer 表中,它只存储整数

所以我可以将所有类型的对象存储在系统中,仍然可以根据属性数据进行过滤和排序。它使查询更加复杂,我不认为它是有效的。

这是在 mysql 或其他关系数据库中执行此操作的唯一方法吗?我应该尝试查找此问题的其他数据库模型吗?

编辑我做了一些研究,似乎我需要的是一个具有 SQL 功能的面向文档的数据库。

5

如果你想使用RDBMS类似文档的数据库,我认为你应该看看mongoDB

MongoDB 的一个关键目标是弥合键 / 值存储(快速且高度可扩展)与传统 RDBMS 系统(功能深入)之间的差距。

5

我认为您要做的是研究称为“对象关系映射”的领域。它是一个很大的领域,有很多解决方案。有些是在框架中使用的,例如 Rails 中使用的“”ActiveRecord。

4

您的设计称为 Object-Attribute-Value (O)。它是将对象映射到关系数据库的一种方法。它通常非常慢,但非常灵活。如果你的类定义不断变化 (或动态变化) 这可能是你唯一的选择。

您可以使用 Object-Relational-Mapping (ORM)。这是将对象制作到关系数据库的另一种方法。它要快得多,而且灵活性稍差。如果您的类定义不经常更改 (并且不动态更改),这是一个更好的选择。

0

使用一个表是可能的,而且可能更可取。为所有对象类型的每个属性设置一个表列。然后再添加一列以指示“对象类型”。您可以通过对具有特定对象类型名称的行的简单查询,从表中获取一种类型的所有对象。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(236)
动态sql:什么是动态 SQL(what is dynamic sql)
上一篇
N sga 2:Oracle数据库配置中的SGA和PGA
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(42条)