在关系数据库中存储自定义对象的最佳方法是什么?

时间:2010-05-16 22:25:37

标签: entities custom-object

我的物品有他们的属性。对象可以更改其结构:可以添加/删除/更改属性。物体可以绝对丢弃。 所以对象的元数据(描述,类,调用它们就像你想要:))可以改变。

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

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

目前我只看到两种方式:

  1. 将对象模式存储在几个表中:模式常规数据,模式属性,可能的属性类型。将实例存储在其表中:实例常规数据,几个表 - 每种类型从可能的属性类型表到存储实例属性数据。等等。
  2. 存储p1中的对象模式,但在一个表中存储XML文件等实例:一个表用于一般实例信息,一个表用实例XML。
  3. 请不要问为什么/我需要这个。只需要存储自定义对象,DB应该快速工作:)

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我将使用.NET(特别是C#)。我必须为项目使用关系数据库。

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

答案 3 :(得分:0)

对于关系数据库,有几种选择。

  1. 序列化为BLOB - 不好, 因为你无法搜索对象。
  2. 拥有元数据和表格的表格 与Property1等列 PropertyN - 相当快但不完全 灵活。
  3. 如果你不需要 通常你可以改变架构 对象的真实表格(例如真的 正在做CREATE TABLEALTER TABLE 等)。
  4. 除了关系数据库之外,您可以尝试NoSQL数据库,例如mongodb。我刚刚运行了一些测试,一个带有5M对象的集合工作得相当快。显而易见的NoSQL解决方案不适合您的关系要求,但如果您有时间尝试一下。