是有一个关键的价值储存,这将给我下:

  • 请允许我简单地添加和去除的节点,并将redstribute数据自动
  • 请允许我以删除的节点和仍然有2个额外的数据节点,以提供冗余
  • 请允许我以储存文本或图像,达到1gb在的大小
  • 可以存储小尺寸数据,以100TB的数据
  • 快(因此将允许查询,以执行上它)
  • 让这一切透明的客户
  • 工作上Ubuntu/FreeBSD或Mac
  • 免费或开放源

我基本上想要的东西我可以用"单一",而不必担心有缓存,一个数据库,以及几个组件的储存所以,是的,我想一个数据库"银子弹"你可以说的。

感谢

祖拜尔

答案迄今为止:心上的操作系统,应用程序-尽我所能看到的这只是一个文件系统,并经过一番研究,它似乎只适用于大型图像文件

东京的暴君-需要lightcloud.这并不自动扩展为你增加新的节点。我没有看到这个和它似乎是非常快的查询这合到一个单一的节点不过

Riak-这是一个我找到我自己,但我没有任何结果呢

亚马逊S3-是任何人使用这个作为他们唯一的坚持不懈层中生产?从我所看到的这似乎是用于储存的图像作为复杂的查询是太贵了

@巫师建议卡桑德拉-肯定是一个我找到

迄今为止似乎没有数据库或关键价值的商店,满足标准,我所提到的,甚至没有后提供赏金为100点没有问题得到回答!

有帮助吗?

解决方案

你问的太多了从开放源码软件。

如果你有一个几百万美元的预算用于某些类企业软件,有一对夫妇的解决方案。什么都不做你想做的,但有的公司的产品都是靠近你在找什么。

"快速(因此将允许查询来执行它的顶部)"

如果你有一种关键价值的储存,一切都应该是非常快的。然而问题变得没有一个体或数据架构建立在关键价值的商店,你最终将会通过整个数据库,用于每次查询。你需要一个索引,其中包含关键的每个"类型"的数据存储。

在这种情况下,通常可以执行的查询并对所有~15,000机。瓶颈的是,廉价的硬盘驱动器盖了在50求每秒。如果你的数据组合在RAM,你的表现将是极其高。然而,如果钥储存在RAM,但没有足够的RAM的价值观可以保存,该系统将转到光盘上的几乎所有关键价值的查找。钥匙是每个位于随机的位置上,驱动器。

这限制了你50键值查找每秒每个服务器。而当键值对储存在RAM,这是不寻常的得到100k操作每秒每个服务器上的硬件商品(ex。穿红衣).

串光盘读性是非常高的。我已经寻求驱动转到50MB/s(800Mb/s)在序读。所以如果你们储存的价值观光盘,你必须要结构存储,以便值,需要读光盘可以读串.

这就是问题所在。你不能得到很好的性能上的香草的关键价值的商店除非你要么存储的关键值对完全在RAM(或钥匙在RAM与价值观固态硬盘驱动器)或如果定义的某些类型的模式或类型系统上的钥匙然后集的光盘上的数据,以便所有的钥匙给定类型的可检索的方便地通过一串光盘读。

如果一个关键具有多种类型(例如如果你有数据的类型继承关系中的数据库),那么关键的将是一个元素的多个索引表。在这种情况下,将要作出的时间-空间权衡的结构的价值,使他们可以阅读串从光盘。这就需要冗余储存的副本的价值为关键。

什么你想要多一点高于一个关键价值的储存,尤其是如果你打算做的查询。该问题的存储大的文件不过是一个非的问题。假装你的系统可以钥匙高达50梅格。那么你刚刚打破了1演出的文件为50兆段和准的一个关键的各段的价值。使用一个简单服务器直接进翻译的文件的一部分,你想到的一个关键价值的查找操作。

问题的实现冗余是更加困难。它非常容易"喷泉代码"或"部分的文件"关键的价值表服务器,以使服务器的数据可以重建在线速度(1Gb/s)上一个备用服务器,如果一个特定的服务器死亡。通常情况下,你可以检测服务器的死亡,使用"心脏的跳动"系统,这是触发,如果服务器没回应10秒钟。它甚至有可能为关键的价值查找针对部分文件中的编码键值表,但是它是效率低下这样做,但仍然给你的备份服务器故障。一个更大的问题就几乎是不可能的保留备份最新的,并且数据也可以3分钟岁。如果你正在做的很多写的备份功能,是要介绍一些性能的开销,但是开销将可以忽略不计,如果系统主要是在做读。

我不是专家在维持数据库的一致性和整体性的制约下的故障模式,所以我不确定是什么问题这一要求将介绍。如果你不需要担心这个,这极大地简化了该系统的设计和它的要求。

快(因此将允许查询,以执行上它)

第一,忘记加入或任何操作尺度快于n*日志(n)当你的数据库,这是很大的。有两件事你可以做的更换功能的正常实施联接。你可以结构数据,这样你就不需要做的加入或者你可以"预汇编"的查询正在进行的工作和使一个时间-空间的贸易并预先计算的加入,并将它们存储查询。

语义网络数据库,我认为我们将看到人们预先编制的查询和使时间-空间的权衡,以便实现不俗的表现,即使温和大小的数据集。我认为,这可以是自动完成的和透明的方式通过该数据库的后端,没有任何努力的一部分应用程序员。然而,我们仅仅是开始看到企业数据库以落实这些技术对于关系数据库。没有开放源代码产品不作为我知道,我会惊讶如果任何人试图做这个的链接数据在水平扩展的数据库。

对于这些类型的系统,如果你有额外的内存或储存空间,最好采用的是预先计算和储存结果的共同子查询能原因,而不是添加更多的冗余的关键价值的商店。预算结果和秩序通过的钥匙你要查询反对把一个正^2加入为一个日志(n)查找。任何查询或子查询的规模比n*日志(n)一些东西,其结果需要执行和缓存在的关键价值的商店。

如果你正在做大量的写道,缓存的子查询将是无效的速度比它们可以处理并且没有表现的好处。在处理无效缓缓存子查询是另一个棘手的问题。我觉得一个解决方案是可能的,但是我还没有看到它。

欢迎来到地狱。你不应该指望得到这样一个系统免费为20年。

迄今为止似乎没有数据库或关键价值的商店,满足标准,我所提到的,甚至没有后提供赏金为100点没有问题得到回答!

你问对于一个奇迹。等待20多年,直到我们有开放源奇迹的数据库或者你应该愿意付钱的解决方案的定制应用程序的需要。

其他提示

亚马逊S3是一个储存解决方案,而不是一个数据库。

如果你只需要简单key/value你最好的选择就是利用亚马逊SimpleDB合S3。大文件存储在S3,同时元数据,用于搜索存储在SimpleDB.这给你一个水平扩展的关键/价值系统的直接访问S3。

还有另一个解决方案,这似乎正是你在找什么:Apache卡桑德拉项目: http://incubator.apache.org/cassandra/

目前twitter切换到卡桑德拉从缓存+mysql集群

HBase和HDFS一起履行这些要求。HBase可以用来储存和检索的小型对象。HDFS可用于储存大的对象。HBase契约的小型对象并且将它们作为更大的HDFS。速度是相对的-HBase是不是快速随机读磁盘作为mysql(例如)-但是很快的服务读取存储器(类似于Cassandra).它具有极好的写信的性能。HDFS,潜在的储层,是充分的弹性损失的多个节点。它复制跨架以及允许架水平的维护。这是一个基于Java堆Apache许可运行的相当多数的操作系统。

主要弱点的这个堆栈不到最佳的随机磁盘中读性和缺乏数据中心的支持(这是一项正在进行的工作).

我可以建议你们两个可能的解决方案:

1)亚马逊的购买服务(亚马逊S3)。100结核病,它将花费14 512$每月。
2)多更便宜的解决方案:

建立两个自定义的操作系统,应用程序,储存荚(链接)和运行一个心在它的上面。

目前我正在调查如何将千兆字节的数据使用的类似方案,所以,如果你发现一些有趣的东西在这,请后你笔记。

看看 东京的暴君.这是一个非常轻型高性能复制的守护一个出口 东京内阁 关键价值的商店网络。我听说过好的事情。

从我看到你的问题 项目伏地魔 似乎是最近的一个。看看他们 设计页面.

唯一的问题,我看到的是它将如何处理大文件,并根据 这个线程, 事情并不都是好的。但你可以随时工作周围很容易使用的文件。在结束-这是确切的目文件系统。看看 维基百科文件系统的列表 -名单是巨大的。

你可能想看一看 MongoDB.

从什么我可以告诉你正在寻找一个数据库/分布式文件系统的混合,可能很难或甚至不可能找到。

你可能想看看在分布式文件系统等 MooseFS服务器 而保持你的数据作为文件。这两个系统的容错和分布(你可以把在,并采取了节点你喜欢的人),且两者都是透明的客户(建立在保险丝)-你在文件系统的使用简单的行动。这包括以下特点:1), 2), 3), 4), 6), 7), 8).我们正在使用MooseFS为数字电影储存的东西说1,5PB的储存和上载/下载的是尽快作为网络设置的允许(所表现I/O依赖性、没有协议或实现有关).你不必查询(5)在您的名单),但你可以几个这样的文件喜欢的东西 MongoDB 甚至一些搜索引擎像分类:设(它已聚集指数),查询数据存储在文件系统。

祖拜尔生产,

我工作的一个关键价值的商店这么远是 速度比其他任何东西.

它没有(尚未)使用复制的缺失你的2第一个要求,但这个问题,启发了我-谢谢你!

没有:请允许我简单地添加和去除的节点,并将redstribute数据自动
没有:请允许我以删除的节点和仍然有2个额外的数据节点,以提供冗余
确定:请允许我以储存文本或图像,达到1gb在的大小 (是:无限)
确定:可以存储小尺寸数据,以100TB的数据 (是:无限)
确定:快(因此将允许查询,以执行上它) (是:快于东京内阁的TC-固定阵列)
确定:让这一切透明的客户 (是:综合网络服务器)
确定:工作上Ubuntu/FreeBSD或Mac (是:Linux)
确定:免费或开放源 (是:免费软件)

除了单个程表现优于哈希表和B树,这KV商店是唯一一个我所知道的是"等待",(没有阻止,也没有推迟任何操作)。

快速访问的代码模版将在这个方向。没有免费的,但...

除了什么其他人已经提到的-你可以看看OrientDB- http://code.google.com/p/orient/ 文件和K/V储存,看起来非常有前途。

检查了 BigCouch.这是CouchDB,但优化集群(和所有大型数据的问题集群是适当的)。BigCouch到了 合并到该项目CouchDB 就在我们发言的时候,通过人 部署, 其中许多人是核心的提交者对CouchDB.

破败你的要求:

请允许我简单地添加和去除的节点,并将redstribute数据自动

请允许我以删除的节点和仍然有2个额外的数据节点,以提供冗余

是的。BigCouch使用发电机的概念的法定人数设定的如何许多的节点保持多少份的数据。

请允许我以储存文本或图像,达到1gb在的大小

是的。就像CouchDB,你可以流blob(例如文件)任意大小的数据库。

可以存储小尺寸数据,以100TB的数据

是的。该小组建BigCouch这样做是因为他们面临着一系统产生大量数据 每秒。

快(因此将允许查询,以执行上它)

是的。查询通过map/reduce在 O(日志n)时间.

让这一切透明的客户

工作上Ubuntu/FreeBSD或Mac

免费或开放源

是啊!开放源下Apache2.0许可证。默认的安装说明是Debian系统中,如Ubuntu。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top