标签: nosql

哪种 NoSQL 数据库可用于处理大量数据

我正在寻找 NoSQL 以获取大量数据。我们目前正在 MySQL 中存储网页文本的缓存版本,但似乎数据库会很快变得庞大。

我的要求是:

  • 持久性,不得在刷新/写入时丢失数据
  • 读取速度非常快,写入速度相当快
  • 完全一致的复制
  • 最好是在内存中加上最终的磁盘写入

我现在在看:MongoDB、Redis、Raik 和 Cassandra。

哪个最符合我的要求?

database mongodb cassandra nosql redis

4
推荐指数
1
解决办法
4402
查看次数

存储稀疏矩阵的数据库

我有一个非常大且非常稀疏的矩阵,仅由 0 和 1 组成。然后我基本上处理(行列)对。我每行/列最多有 10k 对。

我的需求如下:

  • 并行插入(行-列)对

  • 快速检索整行或整列

  • 快速查询(行列)对的存在

  • 如果可能的话,一个 Ruby 客户端


是否有适用于此类约束的现有数据库?

如果没有,什么能让我获得最佳性能:

  • 一个 SQL 数据库,有一个这样的表:

row(indexed) | column(indexed) (但索引必须不断刷新)

  • 一个 NoSQL 键值存储,有两个这样的表:

row => columns ordered list

column => rows ordered list

(但将元素并行插入到列表中)

  • 别的东西

谢谢你的帮助!

ruby database sparse-matrix nosql

4
推荐指数
1
解决办法
3334
查看次数

如何使用 MongoDB 或其他文档数据库来保存视频文件,以及添加到现有二进制文件和并行读/写的选项

我在视频服务器上工作,我想使用数据库来保存视频文件。由于我只需要存储带有元数据的简单视频文件,我尝试在 Java 中使用 MongoDB,通过其GridFS机制来存储视频文件及其元数据。

但是,我需要两个主要功能,而我无法使用 MongoDB 进行管理:

  1. 我希望能够添加到以前保存的视频中,因为保存视频可能是分块执行的。我不想删除到目前为止的二进制文件,只需在项目末尾附加字节即可。
  2. 我希望能够在写入时读取视频项目。“线程A”将更新视频项目,添加越来越多的字节,而“线程B”将从项目中读取,在写入/刷新后立即接收“线程A”写入的所有字节。

我尝试编写简单的代码来做到这一点,但失败了。似乎 MongoDB 不允许对二进制文件进行多线程访问(即使一个线程正在执行所有写入),我也找不到添加到二进制文件的方法 - Java GridFS API 只提供来自已经现有的 GridFSDBFile,我无法获得一个 OutputStream 来写入它。

  • 这是否可以通过 MongoDB 实现,如果可以,如何实现?
  • 如果没有,您是否知道任何其他可能允许这样做的数据库(最好不要太复杂,例如完整的关系数据库)?
  • 我最好使用 MongoDB 只保留视频文件的元数据,并手动处理从文件系统读取和写入二进制数据,这样我就可以自己实现上述要求吗?

谢谢,

database video document mongodb nosql

4
推荐指数
1
解决办法
1万
查看次数

表存储服务(Azure 的 nosql 实现)与 Windows Azure 缓存(非结构化内存缓存)

我们想在 Azure 中实现缓存有两个主要原因:

  1. 加快重复数据访问
  2. 减轻数据库压力

以下是我们计划缓存的数据的特征:

  1. 相对较小(1 - 100 kb)
  2. 特定于每个客户
  3. 不是私有的,但我们真的不希望随机的人浏览我们的整个缓存
  4. XML 或 JSON
  5. 由 C# 使用(即不直接在 html 中链接)
  6. 大多数星期数据不会改变,尽管有些日子数据可能会改变几次

出于这个特定目的,表存储似乎比 Blob 存储更好(我们只是为图像、CSS 和 JavaScript 实现了 Blob 存储)并且Windows Azure 缓存似乎比 Windows Azure 共享缓存更好(也许几乎总是更好,共享缓存主要是遗留的功能在这一点)。

两者的编程 API 看起来都很简单。与我们为云站点支付的费用相比,每个站点的成本似乎可以忽略不计。

到目前为止,由于我们认为 Azure 缓存的优缺点,我们倾向于使用表存储。作为 .Net 老手,我们对内存缓存比 NoSql 风格的解决方案更熟悉:

Windows Azure 缓存的问题:

  1. 如果 VM 移动到不同的服务器(由 Microsoft 出于负载平衡或其他原因),内存中的缓存是否完整移动?
  2. 我们猜测,每当我们向云发布更改时,它都会清除现有的内存缓存
  3. 虽然用户在进行更改时很少对缓存数据进行更改,但他们可能会在几秒钟内进行多次更新,我们不确定这将如何与位于运行 Web 角色的多个节点上的缓存一起使用,尤其是在流量增加的情况下. (这可能也是表存储的一个问题!)
  4. 表存储看起来更容易调试

Windows Azure 缓存的优势

  1. 稍微快一点

azure nosql azure-cdn azure-caching

4
推荐指数
1
解决办法
1743
查看次数

用于动态问答的 MongoDB 模式

我有一个动态问答的当前关系模型。我正在尝试查看是否可以将架构转换为 MongoDB 以提高性能和灵活性。

我们基本上有一系列问题和问题类型。这些问题被放在一个问题集中。

问题按特定顺序提出,但对于某些问题,根据答案,下一个问题可能会有所不同。

例如,如果 Q1=YES 那么问问题 Q9 否则问问题 Q2

关于如何在没有我目前使用的各种关系 tavles 的情况下设计这种模式的任何想法?

schema-design mongodb nosql mongodb-query

4
推荐指数
1
解决办法
3584
查看次数

couchbase 元数据开销警告。62% 的 RAM 被密钥和元数据占用

好吧,因为我没有 10 次重复,所以我无法发布图片,但我会尝试用文字解释。

我有一个带有 4 个存储桶的 7 节点 Couchbase(社区)集群。最近,我收到了其中一个桶的元数据开销警告的垃圾邮件(不断)。警告弹出,如下所示:

元数据开销警告。分配给节点“xxx”上的桶 XXXX 的 RAM 的 62% 以上被键和元数据占用。

而且我读到这通常表明桶需要更多的内存。但我不认为那是我的问题。我猜我只是有很多元数据。当我查看Data Buckets选项卡时,这个 Bucket 有RAM/Quota Usage 64GB/75GB。所以对我来说,看起来大约有 11GB(75-64GB)可用。 存储桶概述

如果我查看 Bucket Analytics VBUCKET RESOURCES指标,我会发现RAM中有59GB 用户数据,RAM 中有46GB 元数据。所以据我所知,在一个总共有 75GB 的存储桶上应该有 105GB 的 RAM!?!

但这对我来说并没有那么明显,这里有一些我不明白的东西。是的,75GB 中的 46GB 大约是 62%。但是,应该在 RAM 中的 59GB 用户数据呢? 桶分析

编辑:典型的文档可能如下所示:

ID=1:CAESEA---rldZ5PhdV4msSdEchI
CONTENT=z2TjZEzkZ84=
Run Code Online (Sandbox Code Playgroud)

还有我的问题。我该怎么办?这种情况在我的情况下是否可以接受。如果是这样,我是否更改该警告的阈值(我不建议阅读该阈值,因为出于某种原因将警告设置为 50%)。

或者我分配更多的内存?如果是这样,如果已经有 11GB 可用空间,这对我有什么帮助?

请帮我澄清这些数字,并建议我是否需要采取任何行动。

nosql couchbase

4
推荐指数
1
解决办法
2303
查看次数

在对象数组中查找具有两个特定 id 的所有文档。蒙古数据库

您好,我有一个 mongodb find() 问题查询。我试图在同一个对象数组中找到具有两个特定 ID 的所有文档。

示例文档结构:

文档 1

{
    gameId:394028,
    people: [{
      id: 5,
      mapSide: 'left'
   },{
      id: 4,
      mapSide: 'right'
   },{
      id: 1,
      mapSide: 'right'
   },{
      id: 2,
      mapSide: 'left'
   }]
}
Run Code Online (Sandbox Code Playgroud)

文档 2

{
    gameId:394028,
    people: [{
      id: 7,
      mapSide: 'left'
   },{
      id: 9,
      mapSide: 'right'
   },{
      id: 4,
      mapSide: 'right'
   },{
      id: 1,
      mapSide: 'left'
   }]
}
Run Code Online (Sandbox Code Playgroud)

我将如何在同一个 people 数组中获取 id 为 5 和 4 的所有文档?我试过这个shell命令:

    db.COLLECTION.find({"people.id":5, "people.id":4}); //should return doc 1
Run Code Online (Sandbox Code Playgroud)

但是我还没有得到任何结果。我也打算仅在他们有不同的地图方面时才找到 id - 我试过这个: …

mongodb nosql mongodb-query

4
推荐指数
1
解决办法
1507
查看次数

Elasticsearch 按星期几和小时聚合

我有以下类型的文件:

[{"msg":"hello", date: "some-date"},{"msg":"hi!", date: "some-date"}, ...
Run Code Online (Sandbox Code Playgroud)

我想按星期几计算文档数。例如,周一发送了 x 条消息,周二发送了 y 条消息,依此类推。

我已经将 date_histogram 与聚合一起使用,但它每天都会返回文档。它确实返回了我的一天,但是说“星期三,22”和“星期三,29”作为单独的聚合文档返回。

这与Elasticsearch有点相关- 按星期几和小时分组,但该问题没有答案,所以我重新发布。根据那里的建议,它要求我对 key_as_string 进行术语聚合,但我需要为每个对象添加 doc_count,而不仅仅是计算术语。我也不知道如何在嵌套聚合中使用 key_as_string。

这是我尝试过的:

"aggs" : {
                "posts_over_days" : {
                    "date_histogram" : { 
                        "field" : "created_time", 
                        "interval": "day",
                        "format": "E" 
                    }
                }
Run Code Online (Sandbox Code Playgroud)

nosql elasticsearch elasticsearch-plugin pyelasticsearch spring-data-elasticsearch

4
推荐指数
2
解决办法
1万
查看次数

是什么让 CommitLog 比在 Cassandra 中写入 SSTable 更快?

我目前正在深入探索 Cassandra,因为我愿意专注于它。我遇到了 Cassandra“写路径”,现在试图理解提交日志。据我了解,写入在写入提交日志时会被确认,然后写入 MemTable(内存表)。但是,如果提交日志被写入文件系统,那么作为 SSTables。有什么神奇之处可以使写入提交日志更快,或者如许多帖子和文档中所述

一旦写入提交日志和内存,就说写入成功,因此写入时的磁盘 I/O 非常少

为什么不写入 SSTable 和 MemTable 才算成功?

cassandra nosql

4
推荐指数
2
解决办法
489
查看次数

ArangoDB 数据库目录被锁定

当我执行

sudo arangodsudo service arangodb start在我的主目录中

我收到以下消息

[2844] FATAL cannot start server: database directory is locked
[2867] FATAL cannot start server: database directory is locked
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

nosql arangodb

4
推荐指数
1
解决办法
2057
查看次数