问题标签 [riak]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
1030 浏览

mysql - 哪个数据库适合这项工作?

我正在开发一项功能,并且可以就我应该使用哪个数据库来解决这个问题提出意见。

我们有一个使用 MySQL 的 Rails 应用程序。我们对 MySQL 没有任何问题,它运行良好。但是对于一个新特性,我们正在决定是否保留 MySQL。为了简化问题,我们假设有一个UserMessage模型。用户可以创建消息。消息根据他们与发布者的关联传递给其他用户。

显然,存在基于友谊的关联,但还有更多基于用户个人资料的关联。我计划将一些关于海报的元数据与消息一起存储。这样我就不必每次查询消息时都提取元数据。

因此,消息可能如下所示:

当我查询消息时,我需要能够基于零个或多个元数据属性进行查询。这个调用需要快速并且经常发生。

由于元数据属性的数量以及查询中可以包含任意数量的事实,在此处创建 SQL 索引似乎不是一个好主意。

就个人而言,我有使用 MySQL 和 MongoDB 的经验。我已经开始研究 Cassandra、HBase、Riak 和 CouchDB。我可以从可能已经研究过哪个数据库适合我的任务的人那里获得一些帮助。

是的,消息表很容易增长到数百万或行。

0 投票
1 回答
525 浏览

riak - Riak 搜索 - 结果仅限于前 10000 个

我有一个 Riak Search 节点正在运行,并且正在尝试一些测试查询以了解性能。

我正在通过搜索外壳运行查询,结果被限制为前 10000 个。我希望所有结果都回来,但找不到这个 10000 个限制来自哪里?

0 投票
1 回答
1624 浏览

memory - MongoDB、Riak 和 HyperTable(或 HBase)的内存需求/利用率

我已经评估了大多数 NoSQL 解决方案,似乎结合使用 MongoDB、Riak 和 HyperTable(或 HBase)是可行的方法。

这些数据库舒适运行的最低要求是什么?

比方说,如果我将这些数据库(MongoDB、Riak 和 HyperTable - 或 HBase)和 Web 服务器(如 nginx 或 Cherokee)和 Java/GlassFish - 全部部署在运行 FreeBSD 且具有 32 GB RAM 的单机上,如何他们表演?请注意,通过这种方法,整个 32 GB RAM 由所有应用程序平均共享。对于 Java/GlassFish 和 HBase,可以使用“-Xmx0000m”选项来限制它,但是对于那些数据库,它们会自动使用整个内存吗?我知道 MongoDB 是内存映射的——等等——那么当它们都在争夺内存时会发生什么?(我认为可以通过启动参数来限制 MongoDB、Riak 和 HyperTable 的内存利用率,但是如何?)

或者,在 Solaris(或 OpenIndiana)上部署 Solaris 容器(或“区域”)虚拟化来限制每个应用程序是否是一种更好的方法,例如为每个 MongoDB、Riak 和 HyperTable/HBase 区域分配 4 GB?在这种方法中,所有数据库基本上都在仅 4 GB 的环境中运行?那么,为了让它们正常工作,最低舒适的 RAM 是多少?

0 投票
1 回答
307 浏览

database - 与 Riak 进行链接行走 - 搜索“共同朋友”

任何熟悉 Riak 的人都可以解释如何进行链接步行以在两个人之间找到共同的朋友(例如,就像 Facebook 的共同朋友一样)?此外,理想情况下,计算要求应该是最小的 - 即。服务器不必经过很长时间做计算。

我正在考虑将所有“人”放在“人”桶中,每个“人”都会有一个朋友链接(这就像一对多的关系),然后对于每个“人”都是反向关系-链接回另一个人(这就像一对一的关系)。我认为可以有效地做到这一点,并且计算/结果将立即可用,但无法弄清楚。

(好吧,我还没有完全开始使用 Riak 进行真正的编码,所以对 Riak 的链接遍历功能进行更全面的解释将不胜感激。)

谢谢!

0 投票
2 回答
2412 浏览

python - 使用简单的 map-reduce 列出存储桶中的所有键与 bucket.get_keys()?

根据 Riak 的文档(使用 Python 绑定),get_keys()非常昂贵且不适合生产。我的问题是一个非常简单的地图查询是否合适。例如,仅使用具有以下功能的地图阶段:

这会比 get_keys() 表现更好吗?为什么 Riak 不提供这个实现而不是当前版本的 get_keys()?有没有更好的方法列出存储桶的键?

0 投票
2 回答
4006 浏览

sql-order-by - 如何排序/排序数据?

我已经使用过 MongoDB、CouchDB、Redis、Tokyo Cabinet 和其他 NoSQL 数据库。最近我偶然发现了 Riak,我觉得它很有趣。为了开始使用它,我决定编写一个小型 Twitter 克隆,即 NoSQL World 中的“hello world”。要获得一个完全可用的克隆,有必要按时间顺序对推文进行排序。在阅读了 Riak 文档后,我发现 Map-Reduce 是完成这项工作的正确工具。在我的开发环境中它工作得很好,但是在生产环境中,有数百个并行查询的性能如何?是否有其他可能更快的数据排序方法,或者是否可以以有序的形式存储数据(如 Cassandra)?

我想我已经找到了解决这个问题的另一种方法——一个简单的链表。因此,一种可能的实现可能是,每个用户都有他/她自己的“时间线存储桶”,其中存储了指向推文数据本身的链接(推文单独存储在“推文”存储桶中)。如您所知,这个时间线桶必须包含一个名为“first”的键,它链接到最新的时间线对象并且是列表的起点。要在时间线中插入一条新推文,只需在时间线桶中插入一个新项目,将此新项目的“下一个”链接设置为“第一个”项目,然后将新项目设置为“第一个”。

简而言之:像在链表中一样插入一个项目......

与 Twitter 一样,个人时间线仅包含向用户显示的 20 条推文。要接收最后 20 条推文,只需 2 次查询。为了加快速度,第一个查询使用 Riak 的链接遍历功能来获取最新的 20 个对象,标记为“下一个”。最后,第二个也是最后一个查询使用第一个查询计算的键来接收推文本身(使用 map/reduce)。

要删除您刚刚取消关注的用户的推文,我会使用 Riak 1.0 的二级索引功能来接收相关的时间线对象/推文。

0 投票
3 回答
2915 浏览

mongodb - 使用基于文档的 nosql(mongodb、couchdb 和 riak 等)查询关系数据的性能

为了跟进我关于使用 nosql 建模关系数据的问题,我阅读了几篇关于该主题的文章:

Nosql 不代表非关系型

Nosql电子商务示例

他们似乎暗示 nosql 可以处理规​​范化的关系数据。

因此,让我们继续我之前的示例,一个 CMS 系统,它有两种类型的数据:文章和作者,其中文章有作者的引用(按 ID)。

以下是系统需要支持的操作:

  1. 通过 id 和作者一起获取文章
  2. 获取特定作者的所有文章
  3. 查找按创建日期排序的作者的前 10 篇文章

如果相同的数据存储在 RDBMS 上,我想了解这些操作与相同操作的性能。 特别是,请指定该操作是否使用 MapReduce、需要多次访问 nosql 存储(链接)或预加入

我想只讨论基于文档的nosql 解决方案,如 mongodb、couchdb 和 riak。

编辑1:

Spring-data 项目在 Riak 和 Mongodb 上可用

0 投票
2 回答
502 浏览

ruby-on-rails - 波纹与设计

我正在尝试使用以 riak 作为数据库的设计来创建身份验证。我为相同的https://github.com/frank06/devise-ripple找到了一个 ORM 策略,它确实可以正常工作,除了当我尝试使用数据库中已经存在的电子邮件进行注册时它没有提供错误消息,而不是覆盖当前数据并更新它。我发现的问题是,ripple 处理 .save() 的方式与活动记录不同,即当活动记录抛出并且错误 Ripple 只是覆盖它时。

0 投票
1 回答
324 浏览

mongodb - riak search mongodb索引的区别

所以Riak前段时间推出了Riak Search,最近又把它引入了核心。还没有机会玩弄它,但是很好奇人们是否知道它与 mongodb 相比,它提供的索引和查询能力如何?

关于一致性、可用性和其他的讨论放在一边,我只是想看看 riak 搜索和 mongodb 查询和索引的优缺点。它们中的每一个都可以互换吗?所有其他的东西都一样吗?

0 投票
2 回答
760 浏览

mapreduce - 如何进行具有多个地图功能的 riak mapred 查询

我想在 erlang 中执行一个 mapreduce 查询,它包含两个映射阶段,以便 Map2 函数将 Map1 函数的结果作为输入。是否有可能,如果,每个地图阶段的返回值必须是什么

  • 更多细节:

我使用两个简单的 map 函数运行了一个测试 mapred 查询,每个函数都返回输入对象(在列表中)。但是通过运行查询,我得到一个错误匹配错误

我正在使用 riak_search-0.14.2

二郎 R14B03 (erts-5.8.4)

谢谢你!