2

我有我的对象及其属性。对象可以改变它们的结构:可以添加/删除/更改属性。物体可能会被完全丢弃。所以对象的元数据(描述,类,像你想要的那样调用它们:))可以改变。

数据库应该存储对象模式和这些对象的实例。

组织关系数据库结构以存储上述数据的最佳方法是什么?

目前我只看到两种方法:

  1. 将对象模式存储在几个表中:模式常规数据、模式属性、可能的属性类型。将实例存储在它们的表中:实例通用数据,一些表 - 每个类型从可能的属性类型表中存储实例属性数据。等等。
  2. 将对象模式存储在 p1 中,但将 XML 文件之类的实例存储在一张表中:一张用于一般实例信息的表和一张带有实例 XML 的表。

请不要问我为什么/为什么需要这个。只需要存储自定义对象和数据库应该可以快速工作:)

4

4 回答 4

1

连载。在 Java 中,字面意思是序列化。在 Python 中,泡菜。在其他语言中,使用他们得到的任何东西。将结果存储在一个blobby 列中。出去喝杯啤酒。

于 2010-05-16T22:48:26.137 回答
0

我将使用 .NET(尤其是 C#)。而且我必须为项目使用关系数据库。

如果我有数百万个实例,如果我选择使用 BLOB(上面列表中的 p2),这将如何降低数据库速度?从性能的角度来看,存储 BLOB 会更好吗?

于 2010-05-17T07:51:32.517 回答
0

我将架构存储为 XML 的 blob,将数据存储为另一个 XML 的 blob。您可以轻松地对其进行序列化/反序列化,并且已经有 XML 模式的标准。

如果您需要索引部分数据以进行快速检索,那么我会将这些信息提取到您可以索引的其他列中。但肯定会保留 XML blob。

于 2010-05-16T23:04:11.967 回答
0

使用关系数据库有几个选择。

  1. 序列化为 BLOB - 不好,因为您无法搜索对象。
  2. 有一个用于元数据的表和一个包含诸如 Property1 .. PropertyN 之类的列的表 - 相当快但不太灵活。
  3. 如果您不必经常更改架构,您可以使用对象的真实表(例如,真正做CREATE TABLEALTER TABLE )。

除了关系数据库,您还可以尝试 NoSQL 数据库,例如mongodb。我刚刚进行了一些测试,一个包含 5M 对象的集合运行得相当快。显然 NoSQL 解决方案不适合您的关系需求,但如果您有时间,请尝试一下。

于 2010-05-17T08:34:05.647 回答