问题标签 [document-database]
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.
mongodb - 选择 MongoDb/CouchDb/RavenDb - 性能和可扩展性建议
我们正在为一些读/写密集型应用程序寻找具有故障转移集群的文档数据库存储解决方案。
我们将平均每秒有 40,000 个并发写入写入数据库(期间峰值可能高达 70,000) - 并且可能发生几乎相似数量的读取。
我们还需要一种机制让数据库通知新写入的记录(数据库级别的某种触发器)。
就正确选择文档数据库和相关容量规划而言,什么是好的选择?
更新
关于预期的更多细节。
- 平均而言,我们预计每秒在 3-4 个数据库/文档集合中插入 40,000 (40K) 次(新文档)。
- 峰值可能高达 120,000 (120K) 个插入
- 插入应该立即可读 - 几乎是实时的
- 除此之外,我们预计每秒大约有 5000 次更新或删除
- 除此之外,我们还预计有 500-600 个并发查询访问数据。这些查询和执行计划在一定程度上是众所周知的,尽管这可能需要更新,比如一周左右一次。
- 系统应支持存储端的故障转移集群
ravendb - 文档数据库 - 多对多
Users
假设我们模仿和之间的多对多关系的行为UserGroups
,并且我们将用户所在的用户组的 ID 存储在数组中的用户文档中。现在,当我删除一个用户组时,该用户组的 ID 仍将位于用户文档的数组中 - 它是否会影响任何时候的性能,它在数组中保存了一些旧的和无用的值?
c# - RavenDB 会话 > 30
如果我正在尝试保存计数 > 30 我要保存的项目列表,我会收到一条错误消息
已达到此会话允许的最大请求数 (30)。作为预警系统,Raven 限制了允许会话进行的远程调用的数量。会话预计是短暂的,Raven 提供了 Load(string[] keys) 等工具来一次加载多个文档并批量保存。
我能做些什么来解决这个问题?此错误的问题是我没有加载,我正在尝试保存文档。任何想法,将不胜感激。谢谢
c# - 嵌入式 RavenDB 出现“找不到事务存储类型”错误
我能够根据以下代码成功运行 RavenDB 的简单测试:http ://ravendb.net/tutorials/hello-world
接下来我尝试以嵌入式方式运行它,但我不断收到以下错误:
设置:
目标框架是.NET Framework 4
我在我的项目中添加了以下引用:
- \RavenDB-Build-309\EmbeddedClient\Raven.Client.Embedded.dll
- \RavenDB-Build-309\Client\Raven.Client.Lightweight.dll
- \RavenDB-Build-309\EmbeddedClient\Raven.Storage.Esent.dll
- \RavenDB-Build-309\EmbeddedClient\Raven.Storage.Managed.dll
代码是:
我已经尝试搜索了几天,也尝试了一些不同的变体。我不确定发生了什么。
nosql - 在 Nosql (documentstore) 中处理共享对象
对于文档数据库,我还没有理解一件事,那就是如何处理共享对象。拿这两个不同的对象/文件:
用户是两个文档中的同一用户。
- 实际用户是存储在文档中还是某种参考(如在 RDBMS 中)
- 如何处理用户的更改(新名字等)?
nosql - 多租户模型和nosql?
在使用 RDMBS 执行多租户应用程序时,我使用tenantId
每个表中的列来指示行属于哪个租户。
我将如何在 DocumentDatabase 中做到这一点?我们以 mongodb 为例。是DBRef
要走的路吗?还是我陷入了关系思维?或者你会使用除documentdb之外的东西吗?
(我对nosql很陌生)
mongodb - 可以将 sqlServer 视图同步到 MongoDB 或 RavenDB 等 noSQL 数据库中吗?
出于性能原因,我希望将复杂的 sqlserver 视图放入像 mongoDB 这样的文档数据库中。是否可以将两者同步?或将每个记录/文档从视图中获取到文档数据库的最佳方法是什么。
这仅用于在网络上直接查看数据。没有更新、删除或插入。
*想了解documentDB,这将是一个简单的实现项目。
mongodb - 文档数据库如何处理对象之间不断变化的关系(或根本不处理)?
比如说,在项目开始时,我想存储一组公司,并在每个公司内存储一组员工。
由于我使用的是文档数据库(例如 MongoDB),因此我的结构可能如下所示:
如果后来有一个新要求是让一些员工在多家公司工作,会发生什么?
如何管理文档数据库中的这种变化?
文档数据库的简单性是否会成为您最大的敌人,因为它会创建不易修改的脆弱数据结构?
在上面的示例中,我必须运行修改脚本来创建一个新的“Employees”集合,并将每个员工移动到该集合中,同时维护某种关系键(例如每个员工的 CompanyID)。
如果我足够彻底地完成上述操作,我最终会得到很多集合,并且层次结构很少,并且文档通过键连接。
在那种情况下,我是否仍在使用我应该使用的文档数据库?
是不是越来越像关系型数据库了?
data-modeling - 在像 RavenDB 这样的面向文档的数据库系统中,我将如何对分层和关系数据进行建模?
面向文档的数据库(尤其是 RavenDB)真的很吸引我,我想尝试一下它们。然而,作为一个非常习惯关系映射的人,我试图思考如何在文档数据库中正确地建模数据。
假设我的 C# 应用程序中有一个包含以下实体的 CRM(省略了不需要的属性):
我正在考虑将这一切都放在一个Company
文档中,因为联系人和任务在公司之外没有目的,并且大多数时候查询任务或联系人也会显示有关关联公司的信息。
问题来自Task
实体。假设业务要求任务始终与公司相关联,但也可选择与任务相关联。
在关系模型中,这很容易,因为您只有一个Tasks
表并Company.Tasks
与公司的所有任务相关,而Contact.Tasks
只显示特定任务的任务。
为了在文档数据库中建模,我想到了以下三个想法:
将任务建模为单独的文档。这似乎是一种反文档数据库,因为大多数时候您查看公司或联系人,您将希望查看任务列表,因此必须对文档执行很多连接。
将不与联系人关联的任务保留在
Company.Tasks
列表中,并将与联系人关联的任务放在每个单独联系人的列表中。不幸的是,这意味着如果您想查看公司的所有任务(可能很多),您必须将公司的所有任务与每个联系人的所有任务结合起来。当您想将任务与联系人解除关联时,我还认为这很复杂,因为您必须将其从联系人移至公司将所有任务保留在
Company.Tasks
列表中,每个联系人都有一个与其关联的任务的 id 值列表。Task
除了必须手动获取 id 值和必须为联系人制作实体子列表之外,这似乎是一个不错的方法。
在面向文档的数据库中对这些数据建模的推荐方法是什么?
couchdb - CouchDB 在运行时通过任何文档属性映射/减少?
我来自一个 SQL 世界,其中查找由多个对象属性(published = TRUE 或 user_id = X)完成,并且在任何地方都没有连接(因为 1:1 缓存层)。似乎文档数据库非常适合我的数据。
我试图弄清楚是否有一种方法可以将一个(或多个)对象属性传递给CouchDB map/reduce 函数以在数据库中查找匹配的文档,而无需为每种文档类型创建数十个视图。
是否可以在运行时将所需的文档属性键传递给 CouchDB 并让它返回匹配的对象(或匹配分页的对象的计数)?
例如,在一个页面上,我希望所有带有doc.user_id
X 的帖子都是doc.published
. 在另一页上,我可能想要所有带有doc.tags[]
“运动”标签的文档。