【问题标题】:db4o - data partitioningdb4o - 数据分区
【发布时间】:2011-05-18 02:11:29
【问题描述】:

是否可以在 db4o 中对数据进行分区?

我没有发现太多关于它直接在他们的网站上得到支持的信息。我想保留数据,但如果不经常访问,请将其迁移到其他区域。如果要处理的数据较少,它应该会加快查询速度。

如果不支持 db4o,有什么方法可以在 db4o 之外执行此操作吗?

谢谢,

沃尔特

【问题讨论】:

  • 你有什么想法?在数据库之外有 BLOB?还是数据库外部的对象图的一部分,并在访问时透明地加载这些东西?
  • 看我下面的评论,我基本上是想存档信息。如果我的应用程序使用的主数据库很小,它应该比使用大型数据库更快(更好)。

标签: db4o


【解决方案1】:

您不能为此使用多个 DB4O 数据库(因此您有单独的数据库文件)吗?

【讨论】:

  • 是的,这就是我开始走的路线,但我还有很多工作要做......例如,我想归档旧日志,我跟踪 HTTP 请求,但经过在某种程度上,它不再有用了。我仍然想保留它,以便如果我愿意,我可以进一步分析数据的趋势。我要做的就是有选择地将这些对象和任何链接的对象移动到另一个数据库(文件),这在我看来似乎是一项乏味的任务。
  • 如果您与其他对象有复杂的关系,那么我想这将永远是一个难题。另一种方法是为您的可归档类提供一个简单的状态字段,可以将其标记为“已归档”并有效地从搜索中排除。
【解决方案2】:

db4o 核心不支持它,但您可以使用 db4o dRS 在 db4o 实例之间同步对象(您可以使用 dRS 将对象迁移到“旧”存储)

http://developer.db4o.com/Solutions/ReplicationServices.aspx

最好的!

德语

【讨论】:

  • 感谢您的建议,我在搜索中遇到了这个问题。我的第一个想法是这样会制作 2 个副本,但也许我可以用它来制作一个副本,然后删除原件。
【解决方案3】:

这不是一件容易的事,而且目前还没有“现成”的解决方案。

我想有不同的方法:

  • 正如您和 German 已经讨论过的:您可以使用 DRS 将所有内容复制到第二个 db4o 数据库。然后稍后删除主数据库上的原始文件。 DRS 默认情况下不会复制删除,因此应该可以。
  • 也许您可以将旧数据序列化到其他数据存储区。然后添加一个特殊类型,由特殊typetranslator 处理。该类型表示序列化存档数据的“网关”。当您加载该类型时,翻译器会从备用数据存储加载序列化数据。

所有这些解决方案都遇到了一些困难。它们引入了你需要跨越的界限。这使得解决方案变得更加复杂 =(

如果性能下降可以保持在可接受的范围内,那就更好了。那么你不必做这一切。或者考虑一个可以轻松处理这么多数据的数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多