标签: nosql

CAP定理是错误的吗?

CAP 定理定义取自维基百科: https: //en.wikipedia.org/wiki/CAP_theorem

分布式计算机系统不可能同时提供以下三个保证:

  • 一致性(每次读取都会收到最近的写入或错误)
  • 可用性(每个请求都会收到响应,但不保证它包含最新版本的信息)
  • 分区容忍(尽管由于网络故障而任意分区,系统仍继续运行)

我的想法:

对于任何具有CA的系统,无需分区即可正常运行。当分区存在时,系统可以回退到CP或AP,从而可以继续运行。由于系统能够持续运行,因此也满足P。因此,任何CA系统也是CAP系统。因此,所有 CAP 不可能在一个系统中共存的说法是错误的。

sql database database-design nosql

3
推荐指数
1
解决办法
2452
查看次数

索引“文本”MongoDB - 不支持“文本”

我在使用 Mongo 在我的收藏上创建文本索引时遇到了麻烦。就我而言,我尝试映射到的属性称为 url,它是一个文本。

这是我得到的:

db.Property.createIndex({url: "text"})

有人知道我错过了什么吗?

database indexing mongodb nosql

3
推荐指数
1
解决办法
2925
查看次数

MongoDB 中的完整外部连接

我想通过查找 mongoDB 查询在 MongoDB 中执行完全外连接。这可能吗?MongoDB 是否有其他替代方案支持完全外连接?

[更新:]

我想从 Collection1 和 Collection2 获得结果,如下附件:

示例:需要结果

上述结果列中可能存在不同的算术运算,将进一步用于计算。

join outer-join mongodb nosql

3
推荐指数
1
解决办法
4945
查看次数

RocksDB 与 Cassandra

MyRocks (MySql) 和 Cassandra 都使用 LSM 架构来存储数据。因此,我使用 MyRocks 作为存储引擎在 MySql 中填充了大约 500 万行,也在 Cassandra 中填充了大约 500 万行。在 Cassandra 中,仅需要 1.7 GB 的磁盘空间,而在以 MyRocks 作为存储引擎的 MySql 中,则需要 19 GB。

我错过了什么吗?两者都使用相同的LSM机制。但为什么它们的数据大小不同呢?

更新:

我猜这与文本栏有关。我的表结构是(bigint,bigint,varchar,text)。

  • 填充行数:300 000
  • 在 MyRocks 中数据大小 185MB
  • 在 Cassandra 中 - 13 MB。

但如果我删除文本列,那么:

  • 我的摇滚 - 21.6 MB
  • 卡桑德拉 - 11 MB

对这种行为有什么想法吗?

mysql cassandra nosql mariadb rocksdb

3
推荐指数
1
解决办法
1714
查看次数

为什么我们不为 NoSQL 数据库画 ER

我知道 NoSQL 数据库(例如 MongoDB)无法使用实体关系“ER”图进行建模,因为它是无模式的,但我可以对 UML 进行建模,并且它显示了属性之间的关系,那么有什么区别以及为什么呢?

entity-relationship mongodb nosql

3
推荐指数
1
解决办法
3163
查看次数

仅使用单节点(服务器)时elasticSearch还有用吗?

我很好奇,但找不到有关单服务器(节点)elasticsearch 系统的任何资源。我读过有关 NOSQL 及其数据分片的横向扩展优势的内容。如果在一台服务器上运行我的 NOSQL 数据库并在同一台服务器上运行 elasticSearch,elastic 仍然会比替代方案(具有正常查询/lucene 搜索的关系数据库)更快,还是会“失去”作为分布式/集群搜索的优势引擎?

因为我对 NOSQL-search VS 不太感兴趣。SQL 搜索,但更多地涉及 Elastic 的复制/分布式风格及其在单节点集群中使用它的缺点。

谢谢

database rdbms sharding nosql elasticsearch

3
推荐指数
1
解决办法
2521
查看次数

在 Firestore 中对软删除数据进行建模

我试图通过在每个文档上设置一个deletedOn时间戳或空字段来实现软删除。但到目前为止,它使我的查询变得复杂,这让我感到有些头痛,因为我需要在每个查询中过滤掉这些文档。 deletedOn在 UI 中公开以“永久”删除,但如果客户寻求支持,我们只需将该字段设置deletedOn回 null 即可“恢复”已“删除”的数据。有没有更好的方法在 NoSQL 数据库中对此进行建模?我更倾向于拥有单独的收藏?例如contacts contacts_deleted,当 acontact被删除时,将其移动到另一个相应的集合中。但我还是 NoSQL 新手,所以我不知道这是否会更好

nosql firebase google-cloud-firestore

3
推荐指数
1
解决办法
2304
查看次数

如何使用 URI 导出数据库中的所有集合?

如何通过远程连接导出 MongoDB 中的所有数据?我有我的 URI,但无法使用它在网上找到任何内容。

mongoexport --uri <URI> -f <output_file>
Run Code Online (Sandbox Code Playgroud)

当我指定一个集合时,此命令有效,但我不确定如何使用它导出所有集合。

mongodb nosql

3
推荐指数
1
解决办法
3890
查看次数

如何从mongodb中的聊天对话中获取最后一条消息

我试图在用户之间的聊天中获取最后一条消息。以下是我的文档中的收藏。

{
"toUser":123,"fromUser":456,"message":"1 from suresh","timeStamp":"2019-10-09 16:39:14:1414 PM +05:30",

"toUser":456,"fromUser":123,"message":"Man super man ","timeStamp":"2019-10-09 16:43:09:0909 PM +05:30",

"toUser":456,"fromUser":123,"message":"Kk","timeStamp":"2019-10-09 18:31:12:1212 PM +05:30"

"toUser":456,"fromUser":123,"message":"It working man","timeStamp":"2019-10-09 18:31:18:1818 PM +05:30"

"toUser":456,"fromUser":123,"message":"2","timeStamp":"2019-10-09 18:31:21:2121 PM +05:30"

"toUser":101,"fromUser":123,"message":"Kk","timeStamp":"2019-10-09 18:31:12:1212 PM +05:30"
} 
Run Code Online (Sandbox Code Playgroud)

我使用 mongo 查询作为

db.chats.aggregate(
[
    {$match:{$or:[{"toUser":123},{"fromUser":123}]}},
    { "$sort": { "timeStamp": -1}},    
    {
        "$group": {
           "_id": {fromUser:"$fromUser",toUser:"$toUser"},
           "fromUser": {"$first":"$fromUser"},
           "toUser" : {"$first":"$toUser"},
           "message": {"$first": "$message" },
            "timeStamp": { "$first": "$timeStamp"}
        }
    },
]
);
Run Code Online (Sandbox Code Playgroud)

我的输出是

{ "_id" : { "fromUser" : 456, "toUser" : 123 }, "fromUser" …
Run Code Online (Sandbox Code Playgroud)

mongodb nosql aggregation-framework

3
推荐指数
1
解决办法
1476
查看次数

Scylla 如何从缓存中清除数据?

Scylla 如何确定何时从缓存中逐出数据?例如,假设表T具有以下结构:

\n
K1 C1 V1 V2 V3\n
Run Code Online (Sandbox Code Playgroud)\n

我用 500 行填充上表(例如,查询SELECT * from T WHERE K1 = X & C1 = Y返回 500 行)。

\n

一段时间后,我在上面的表中插入一个新行,这将导致上面的查询返回 501 行,而不是 500 行。

\n

Scylla 是否知道自动从其缓存中逐出 500 行,或者至少将第 501 行添加到其缓存中?如果没有,大多数查询将很快开始返回过时的数据。同样,如果我不向数据库添加新行,而是更新现有 500 行之一,会发生什么情况。Scylla 是否知道此修改并能够自动更新其缓存?如果是,它是否足够智能,只更新已更改的数据(新行或已修改的行),还是逐出/更新所有 500 行?

\n

是否存在需要注意数据在内存中更新SSTables但未在内存中更新的情况?

\n

谢谢

\n

聚苯乙烯

\n

我读了很多关于Scylla 中缓存如何工作的内容,但我没有\xe2\x80\x99 看到上述问题的明确答案。如果 Scylla 确实知道后台更新,我也会很好奇它如何实现缓存的动态和智能更新。

\n

database caching nosql scylla

3
推荐指数
1
解决办法
339
查看次数