Tag: nosql

Redis中的命名空间

是否有可能在Redis中创build名称空间? 从我发现,所有的全局命令(计数,全部删除)工作在所有的对象上。 有没有办法创build子空间,这些命令将在上下文中受到限制? 我不想为此设置不同的Redis服务器。 我假设答案是“否”,并想知道为什么不实施,因为它似乎是一个有用的function,没有太多的开销。

数据库索引的sortingstring表(SSTable)或B +树?

使用两个数据库来说明这个例子: CouchDB和Cassandra 。 CouchDB的 CouchDB使用一个B +树来处理文档索引(使用一个巧妙的修改在其append-only环境中工作) – 更具体地说,当文档被修改(插入/更新/删除)时,它们被附加到正在运行的数据库文件以及完整的Leaf – >所有节点的B +树节点path,由文档之后的更新版本实现。 这些分片索引修订内容正好与修改一起内联,使得完整索引是在文件末尾附加的最近的索引修改的联合,以及在数据文件中更远的附加部分,这些附加的部分仍然是相关的,尚未修改。 searchB +树是O(logn)。 卡桑德拉 Cassandra将logging键保存在表中(我们把它们看作是这个问题的数组),并将它们作为单独的(sorting的) sortingstring表格不时地写出来。 我们可以把所有这些表格的集合看作是“索引”(从我的理解)。 Cassandra需要时常压缩/合并这些sortingstring表 ,创build更完整的索引文件表示。 searchsorting的数组是O(logn)。 题 假设维护CouchDB中的部分B +树块与Cassandra中的部分sortingstring索引之间存在类似的复杂度,并且假设两者都提供O(logn)search时间,那么您认为哪一个会更好地表示数据库索引,以及为什么? 我特别好奇的是,如果有一个相对于另一个的实现细节,使其特别具有吸引力,或者如果他们都是洗钱,并且您只是select您喜欢使用的任何数据结构/对开发人员更有意义。 谢谢你的想法。

为什么HBase是比Cassandra和Hadoop更好的select?

为什么使用HBase比使用Cassandra和Hadoop更好? 任何人都可以给这个详细的解释吗? 谢谢

NoSQL和空间数据

您有没有使用NoSQL(非关系)数据库存储空间数据的经验? 使用这样的数据库来保存数据(例如,使用SpatiaLite或PostGIS),是否有潜在的好处(速度,空间等)? 我已经看到有关使用MongoDB获取空间数据的文章 ,但是我对一些性能比较感兴趣。

如何search巨大的非文本数据集?

在我工作的一个项目中,客户有一个旧的和巨大的(TB级)RDBMS。 所有types的查询都很慢,没有时间修复/重构模式。 我已经确定了需要优化的一组常用查询。 该组分为两部分:全文和元数据查询。 我的计划是从数据库中提取数据,并将其分区到两个不同的存储系统,每个存储系统都针对特定的查询集进行了优化。 对于全文search,Solr是最有意义的引擎。 这是分片和复制function,使它非常适合问题的一半。 对于元数据查询,我不知道要采取什么路线。 目前,我正在考虑使用一个非常规规范化模式的RDBMS,它表示来自“权威”RDBMS的特定数据子集。 然而,我的客户担心这种子系统缺乏分片和复制function,而与已经包含这些function的Solr相比,设置这些function的困难/复杂性更为困难。 在这种情况下,元数据采用整数,date,布尔,位和string(最大大小为10个)的forms。 是否有一个数据库存储系统具有内置的分片和复制function,可能对查询元数据特别有用? 也许一个没有SQL的解决scheme提供了一个好的查询引擎? 请照亮。 添加/回应: Solr可以用于元数据,但是元数据是不稳定的。 所以,我不得不经常去索引。 这会导致search速度非常快。

如何使用Scala将1亿条logging加载到MongoDB中进行性能testing?

我有一个用Scala编写的小脚本,用于载入一个MongoDB实例,上面有100,000,000个样本logging。 这个想法是让数据库全部加载,然后做一些性能testing(如果需要的话调整/重新加载)。 问题是每十万条logging的加载时间几乎是线性增加的。 在我的加载过程开始时,只需要4秒来加载这些logging。 现在,在近6,000,000条logging中,加载相同数量(100,000)的时间需要300到400秒! 这慢了两个数量级! 查询仍然很快,但以这样的速度,我永远无法加载我想要的数据量。 如果我用我所有的logging(所有100,000,000!)写出一个文件,然后用mongoimport导入整个文件,这样会更快吗? 还是我的期望太高,我使用的数据库超出了它应该处理的? 有什么想法吗? 谢谢! 这是我的脚本: import java.util.Date import com.mongodb.casbah.Imports._ import com.mongodb.casbah.commons.MongoDBObject object MongoPopulateTest { val ONE_HUNDRED_THOUSAND = 100000 val ONE_MILLION = ONE_HUNDRED_THOUSAND * 10 val random = new scala.util.Random(12345) val connection = MongoConnection() val db = connection("mongoVolumeTest") val collection = db("testData") val INDEX_KEYS = List("A", "G", "E", "F") […]

DynamoDB相对于其他NoSQL数据库有哪些优缺点?

我们在Heroku上为我们的SaaS产品使用MongoDB数据库插件。 现在,亚马逊推出了DynamoDB,一个云数据库服务,我想知道如何改变NoSQL产品的景观? 特别是对于基于云的服务或SaaS供应商,与MongoDB相比,如何使用DynamoDB会更好还是更糟? 是否有成本,性能,可扩展性,可靠性,驱动程序,社区等使用一个与其他的好处?

有没有像Redis DB,但不限于RAM大小?

我正在寻找一个符合这些标准的数据库: 可能是不持久的; 几乎所有的数据库密钥都需要在3-6小时内更新一次(100M +密钥,总大小为100Gb) 能够通过键(或主键)快速select数据 这需要是一个DBMS(所以LevelDB不适合) 数据写入时,数据库集群必须能够提供查询服务(单个节点可以被阻止) 不在内存中 – 我们的数据集将超出内存限制 水平缩放和复制 支持全部重写所有数据(删除数据后,MongoDB不会清空空间) C#和Java支持 这是我使用这样的数据库的过程:我们有一个分析集群,每4-6小时产生100Mlogging(50GB)的数据。 数据是一个“键 – 数组[20]”。 这个数据需要通过一个前端系统以每秒1-10k的速度分配给用户。 平均而言,只有约15%的数据被请求,其余的将在下一个数据集产生的4-6小时内被重写。 我试过了: MongoDB的。 数据存储开销,高碎片整理成本。 Redis的。 看起来很完美,但内存有限,我们的数据超过了它。 所以问题是:有什么像Redis,但不限于RAM大小?

正确的方法来导入json文件到mongo

我一直在试图用一些导入的数据来使用mongo,但是我无法正确使用我的文档描述。 这是我使用mongoimport导入的.json的一个例子: https ://gist.github.com/2917854 mongoimport -d test -c example data.json 我注意到,尽pipe为每个商店创build了一个对象,但是我所有的文档都被导入到一个独特的对象中。 这就是为什么当我试图find一家商店或任何我想要查询的时候,所有的文档都会被返回。 db.example.find({"shops.name":"x"}) 我想能够查询数据库获取产品的ID使用点符号类似于: db.example.find({"shops.name":"x","categories.type":"shirts","clothes.id":"1"} 问题是所有的文档都像一个单一的对象一样导入。 问题是:如何 我是否需要导入对象来获得我想要的结果?

MongoDB vs. Redis与Cassandra之间的快速写入临时行存储解决scheme

我正在构build一个跟踪和validation广告展示次数和点击次数的系统。 这意味着有很多插入命令(平均每秒90次,峰值为250)和一些读取操作,但重点在于性能,并使其非常快速。 该系统目前在MongoDB上,但自那时以来我已经被介绍给了Cassandra和Redis。 去这两个解决scheme之一,而不是留在MongoDB上是一个好主意吗? 为什么或者为什么不? 谢谢