标签: nosql

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

在MongoDB中拥有大量集合(需要架构设计建议)

我正在考虑使用MongoDB来保存从100台摄像机录制的图像元数据,并且每台摄像机的记录将保留30天.如果一台摄像机每天提供100,000张图像,那么我将在MongoDB中以最大值保存(100 x 30 x 100000)个图像(文档).我的Web应用程序将查询此数据为:

选择摄像机>选择日期>选择小时>获取该小时内的所有图像.

我计划用以下三个选项设计模式,并需要您的专家意见/建议以获得最佳出路;

1)按小时收集:创建72000个MongoDB集合,即每个摄像机每小时收集1个(100个摄像机X 30天X 24小时)(使用--nssize 500命令超过24000个限制).我担心如果MongoDB允许我创建这么多的集合,其次是在阅读和写入这些集合时预期的性能优势和损失.虽然,对于每小时读取图像看起来非常容易使用此模式,因为我可以在单个查询中将数据提取到任何集合.

2)日常收藏:创建3000个MongoDB收藏,即每个摄像机每天1个收集(100个摄像机X 30天).虽然这是允许的,并且看起来收集的数量很多,但我关心的是从特定日期内的特定时间内阅读图像.

3)逐照摄像机集合:创建100个MongoDB集合,即每个摄像机1个集合(100个摄像机/集合).然后以(20141122061055000)格式保存具有唯一"id"的快照,这是对完整日期时间戳的重新描述(2014-11-22 06:10:55.000).

我希望,如果理想情况下我可以做(1),(2)或(3),但欢迎任何其他选择.

考虑到我的情况,请建议我对MongoDB的选择.

问候.

mongodb nosql

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

RavenDB和Composite模式

假设我有这样的结构

public class Form
{
   public List<Field> Fields { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Field类可以是复合的,也包括从Field类派生的其他Fields ,所以我有一些层次结构.表单作为可靠文档保存到RavenDB中,它可以正常工作.我只是想知道Form从RavenDB 获取实例,我希望Raven创建适当的类(类,派生自Field类).所以,假设我有两个派生类FieldDerived1,FieldDerived2并将它们放入后面的Fields集合中,Form我希望有两个实际类型的元素 - FieldDerived1并且FieldDerived2我添加了这些类的所有附加属性?

c# nosql document-database ravendb

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

在无模式数据库中迁移数据格式有哪些好方法?

如果您使用无模式数据库(特别是面向文档的数据库,如CouchDB,Couchbase,MongoDB)并希望更改特定对象的数据表示格式,则可以保留旧格式的现有记录并以新格式创建新记录.它被宣布为无模式数据库的主要优势之一(我认为因为你可以避免停机).另一方面,处理同类数据的许多格式是不方便和低效的.那么在无模式数据库中将数据从一种格式迁移到另一种格式的好方法/策略是什么?

data-migration document-oriented-db schemaless nosql couchbase

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

使用关系数据库/ ORM或文档数据库/ ODM的动机

我已经很长时间没有从头开始创建一个项目,现在面向文档的数据库(以及ODM)已经变得非常流行,所以我必须在盲目地走向关系路线之前考虑它们.

任何人都可以尝试列出可能导致一种选择或另一种选择的动机/项目标准吗?

database orm nosql document-database odm

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

MongoDB可以丢失数据而CouchDB不能吗?

我正在阅读一篇关于MongoDB和CouchDB的文章,看到MongoDB可能会丢失数据,但CouchDB在某种程度上是稳定的,不可能丢失任何数据.

Redis和mongodb用户可能会有点惊讶地发现,默认情况下,如果进程崩溃或关闭,他们可能会丢失数据.

http://java.dzone.com/articles/should-i-use-mongodb-couchdb

有一种方法可以解决MongoDB中的这个问题,但我是否正确使用它:CouchDB更耐用,更稳定,没有任何配置?因此,如果CouchDB崩溃或者说在CouchDB系统的更新过程中炸弹会爆炸=>从来没有数据存储?

我只是想知道为什么.是因为CouchDB是用Erlang编写的吗?或者是因为CouchDB正在使用MVCC?有任何想法吗?谢谢

database security couchdb mongodb nosql

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

追随者系统,在MySQL或Redis中更好?

我只是想知道选择实施跟随系统的解决方案是什么?

在MySQL中我会有一个表

userID INT PRIMARY,
followID INT PRIMARY
Run Code Online (Sandbox Code Playgroud)

在Redis中,我只使用SET并将所有followID添加到UserID.

什么会更快,让我们说有2000个粉丝,你想列出所有的粉丝?(在一个有大约1M条目的表中)如果两个用户互相追随,会更快找到什么?

非常感谢你!

mysql database nosql redis

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

以原子方式更新Cassandra中的共享状态

问题:

我打算将cassandra用作我的应用程序的nosql数据存储.我有一个使用案例是更新用户的"余额".假设每个用户的余额存储为密钥UID_balance.现在,如果我的应用程序想要更新多个用户的余额,我将如何处理原子性?

我想,在某些时候,应用程序基本上会执行以下操作:

1. for each user u
2.    current_balance = read_users_balance(u);
3.    new_balance     = current_balance + delta_for_user(u);
4.    write_users_balance(u, new_balance);
5. end
Run Code Online (Sandbox Code Playgroud)

现在,这里有几个问题:

  1. 与cassandra的连接可能会中断,导致代码仅更新少数用户的余额.
  2. 在步骤2和步骤4之间,可能有另一个进程可以更新用户的余额,我将更新陈旧的余额,使用户的余额处于"损坏"状态.

RDBMS'解决了这些问题,因为它们提供ACID属性,而Cassandra则没有.我最近看到Cassandra(2012年10月)已经开始提供Atomic Batches.我不确定这是否是解决这个问题的正确方法.

可能解决方案

这是我和朋友一起集思广益的事情.我们实际上并不更新用户的余额,而是创建一条记录,将更新增量附加到不同的记录.例如:

UID1_balance = {100}
UID1_deltas  = {10,20,-40}
Run Code Online (Sandbox Code Playgroud)

为了获得当前的余额,我们只需将增量应用于余额.我们可以有一个脱机过程,将增量应用于用户的余额并修剪增量列表.

这个解决方案起作用并减少腐败状态的可能性,但我认为这是一种矫枉过正.有没有更好的方法来解决这个问题?

cassandra nosql

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

更新mongodb上的子文档时出现问题

说我有一个集合allitems,每个文件都是表格

{_id: "1", items: [{number: 1, main: "how are you?", sub:[{id:1, item: "does it change with the day?", score: 0},{id:2, item:"some other question", score: 0}]}]}
Run Code Online (Sandbox Code Playgroud)

如何更新子项目的分数?

我试过了

 db.allitems.update({_id:"1"}, {$set:{'items.0.sub.0.score': 5}});
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

error: {
    "$err" : "Unsupported projection option: items.0.sub.0.score",
    "code" : 13097
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

mongodb nosql

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

EclipseLink NoSQL限制,支持,未来

我想了解更好的EclipseLink NoSQL,但我无法理解它的局限性,它目前支持的内容,我根本无法找到有关团队未来计划的任何信息.

所以,简而言之,如果你不介意的话,我有很多我想知道的问题清单:

EclipseLink是否支持:

  1. 面向对象的查询
  2. 实体的CRUD
  3. 多态实体
  4. 可嵌入对象(组件)
  5. 基本类型
  6. 单向和双向关系(如果是,哪些?)
  7. 馆藏(集,列表,地图等)
  8. 完整的JPA支持(我认为它确实如此,但万一我错了)
  9. 非规范化
  10. 复杂的连接和聚合

除了这些问题之外,我还应该知道还有其他任何限制或珠宝吗?此外,目前正在从事的团队是什么?未来的计划是什么?

如果有人在这里提供我上面提到的问题的链接或文档,我会非常高兴,因为我找不到任何东西:S

提前谢谢,佩德罗.

eclipselink nosql

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