1

在过去一年左右的时间里,我一直在使用 Django 进行开发,并且非常喜欢它。但有时我发现 ORM 有点像紧身衣。我在数据库中来回移动的所有数据都可以轻松放入 1GB 的 RAM。即使项目增长了几个数量级,它仍然适合 1GB。

我想要一个解决方案,我的应用程序只需要在启动时从磁盘读取,但在我更新对象时隐式写入磁盘。我不太关心这可能给我带来的任何速度提升。我真正追求的是增加的灵活性。如果我有一个与链表、树或其他数据结构非常匹配的问题,我不应该将其移植到关系数据库中。

Python会很好,但其他语言也很好。我正处于这个探索阶段。我想了解一下现有的解决方案。在谷歌搜索这个问题时,我得到了很多与不同 Nosql 项目相关的点击。但是,据我所知,Nosql 是关于当您因为拥有太多数据而超出关系数据库时您所做的一切。我真的处于光谱的另一端。我的数据太少,以至于关系数据库实际上是多余的。

对象数据库是谷歌搜索这个问题时出现的另一件事,这让我想起了 Zope 和 ZODB。很久以前我涉足过 Zope,但我真的不喜欢它。但是读了一点对象数据库让我觉得这可能是我正在寻找的东西。再说一次,他们普遍未能吸引用户让我怀疑。对象数据库已经存在了很长时间,但仍然没有流行起来。我想这意味着他们有问题?

4

2 回答 2

3

如果您正在寻找“将数据结构存储在内存中”和“将它们备份到磁盘”,那么您确实在寻找持久性缓存系统,而Redis非常适合。

如果你想使用 django,内置了一个很棒的缓存系统,它可以通过Redis-Cache项目插入到 redis 后端。redis 所容纳的数据结构与 python 数据结构具有一对一的映射关系,因此它非常无缝。

我不太确定跳过数据库本身的概念是否是个好主意。数据库在聚合、注释、关系等方面提供了如此强大的功能,所有这些都在可接受的性能水平范围内,直到您达到真正的大规模。

也许另一个想法是使用SQLite in-memory database。SQLite 这些天如此无处不在,它已经消失在基础设施中。它是内置的,Android 应用程序,iphone 应用程序,并得到所有标准库的支持。它也是一个很棒的软件,开发和测试得很好,很难反对使用它。

于 2011-06-28T10:53:27.950 回答
1

我工作的公司(Starcounter)创建了一个完全按照您描述的方式工作的数据库。我们已经与合作伙伴客户一起运行该数据库几年了,并且即将公开该产品。我们创建它的主要原因是为了易于使用和性能。如果您在我们的公司论坛上给我发消息(我是 Starconter Jack),我很乐意给您发一份副本。关于面向对象数据库的主题;OO数据库失败的原因主要是因为它们是实验而不是真实产品。它们实现得很差,只支持 OO 范式,忽略了 SQL 和 ODBC 等标准。他们还缺乏稳定性、性能和成熟度。他们的故事类似于早于 iPhone、iPad 和 Kindle 的一两年的早期平板电脑、电子书和智能手机。但就像任何技术一样,有两波(查找“炒作周期”)。虽然第一波会令人失望,但第二波会很好。第一个将由概念和想法驱动,缺乏商业成功和现实生活可用性。第二波将不希望与第一波失败的霉味有任何关系,因此将使用新的和新鲜的首字母缩略词和流行语。未来的数据库将源于 NoSQL 运动。它将增加对 SQL 的支持,许多人会认为这很新颖。它将增加良好的语言集成(大多数语言都是 oo),许多人会认为这也很新颖。它将支持文件,许多人会认为这将是新奇的。许多人会重新发现对交易等的需求。一些脾气暴躁的老人会试图告诉我们,我们所做的只是重新发明现有的想法。在某种程度上,他们是对的;在某些方面他们不会。这一次,概念成熟了。新的想法将被添加,实用主义将被允许。但话又说回来,iPad 在某种程度上仍然是 PDA。

于 2011-06-29T11:22:00.440 回答