问题标签 [ravendb4]

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 投票
1 回答
154 浏览

c# - RavenDB 客户端受限?

一般来说,我对 RavenDB 和 NOSQL 很陌生。为了测试性能,我用 RavenDB.Client 编写了一些非常粗略的代码。我只是启动 500 个并发任务,每个任务都将简单地创建一个测试文档,为每个请求使用一个新会话,随机间隔(1s-10s)。

出于某种奇怪的原因,请求以“突发”的方式发送,在不到一分钟的时间内达到大约 150 次写入/秒。流量爆棚?
每次爆发之间都有几分钟。

调试应用程序时,我可以在 session.SaveChanges() 处设置断点,它会立即被命中,所以我不确定这是否是 ravenDB.Client 库的连接限制(我想是 httpclient?)或者这是否是限制请求的实际数据库。

任何关于为什么会这样的猜测或提示,将不胜感激!

编辑:奇怪的是,在请求之间没有延迟的情况下只运行一项任务时,它会持续执行大约 400-500 个请求/秒。


}

0 投票
0 回答
71 浏览

c# - RavenDb:IDocumentQuery 结果中的计算字段

RavenDB v4 官方文档建议使用IRavenQueryable<T>.Select()方法在结果集中获取自定义字段。它甚至适用于计算字段,例如

问题:IDocumentQuery<T>当使用or IAsyncDocumentQuery<T>instance 而不是时,有没有办法在结果集中拥有计算字段(如上)IRavenQueryable<T>

文档说请求被Query转换成IDocumentQuery<T>幕后。但是,缩小输出字段集的最接近的方法是SelectFields<T>(),它没有在结果集中包含计算字段的选项。

PS文档说Query总是被翻译成DocumentQuery对象。但是,我在代码中找不到它是如何实现的(尽管我猜它是通过IQueryable.Expression完成的)。也许RQL是现在要走的路……

0 投票
1 回答
124 浏览

c# - RavenDB 和递归包含

我有一个结构

我目前在 RavenDB 中存储和查找但包含结果仅允许我在潜在的多级树中包含一个级别。有没有办法告诉它递归查找从顶层引用的所有这些节点?

我知道索引可以递归使用,但我不清楚如何最好地使用它来加载正确的文档,是否有可能以某种方式在索引属性上执行包含?

0 投票
1 回答
75 浏览

nhibernate - RavenDB 4 - 更改修订时间戳

我计划从 SAP SQLAnywhere + NHibernate + Envers 迁移到 RavenDB4。

我正在做一些迁移和性能测试。目前,我正在寻找一种将 Envers Audit 迁移到 Raven 修订版的方法。

我正在尝试什么:

  1. 读取源审计记录。
  2. 将其插入 RavenDB。
  3. 为每条审计记录打补丁。

一切正常,但我需要将 raven 修订时间戳从迁移点更改为保存的 Envers 时间戳。有什么线索可以做到这一点,或者可能是进行这种迁移的更好方法?

我想避免为遗留数据创建另一个集合或添加原始时间戳作为元数据。

谢谢你

0 投票
2 回答
498 浏览

c# - RavenDb 索引对嵌套结构/集合的属性进行过滤和排序(扇出索引)

我正在寻找一种创建静态索引的方法,以便为嵌套结构(对象集合)中的属性值组合以及结构容器提供过滤/排序查询。由于以下原因,这似乎并非微不足道:

  • 如果嵌套结构/集合的属性被分离到索引的各个字段(单个集合)中,则AND在过滤嵌套结构/集合的 2+ 个属性时使用该条件是不可能的。
  • 扇出索引复杂度(参见示例),这使得任何解决方案运行速度都过慢。

给定以下持久模型:

在哪里

问题:如何构建索引Document以通过所有字段的组合进行过滤/排序TitleUserIdTimestamp

可能的用例:

  • 获取包含特定用户和日期范围的“合同”一词的所有文档
  • 按用户最后一次修改对包含单词“contract”的文档进行排序。

PS我知道可以通过重构持久性模型来绕过索引限制 - 在文档中存储最近修改的文档的结构User,但它会施加一些其他限制,我想避免这些限制。

0 投票
2 回答
473 浏览

c# - 多对多关系 RavenDb:文档结构和索引

如何为以下关系模式构建 NoSQL 模型和索引(最好是 RavenDb v4)?

文档类型Contact,其中每条记录可以有多个附加属性(属性的类型在 中定义,CustomField值在 中ContactCustomField在此处输入图像描述

考虑到需要在一个查询中对突出显示的字段进行过滤/排序(联系人中的所有字段加上自定义字段)。


我看到的可能选项:

选项1

自然,我会想象以下持久模型:

但是,为如下查询构建索引(对不起,混合语法)让我感到困惑:

选项 #2

另一种方法是保持标准化结构(如上图所示)。然后它会起作用 - 我只需要ContactCustomField在查询中包含Contact.

缺点是没有利用 NoSQL 的好处。

0 投票
1 回答
106 浏览

ravendb4 - RavenDB 从服务器获取日期时间

对我来说,要从 SQL Server 服务器获取日期和时间,只需执行查询“select getdate()”。
有什么方法可以从 RavenDB 服务器获取日期和时间?

0 投票
0 回答
113 浏览

iis - RavenDB-4:System.ArgumentOutOfRangeException:位置不能为负,但为 -4554

尝试搜索某些数据及其 RavenDB 附件时出现此错误,但我真的不明白出了什么问题。

这是我在搜索数据时使用的查询

此查询用于search我的一个 API 控制器的端点中。大多数情况下,查询按预期工作,我得到了我的数据。

但是在随机时间,我502 Bad Gateway在这个特定的端点上收到一个错误,并且由于 dotnet 进程崩溃,api 崩溃了。它会自动重新启动,并且该端点上的接下来的几个请求正常工作。

我用 Rollbar 记录了所有未捕获的异常,并提供了上面提到的错误和这个堆栈跟踪。

这是我用来获取 RavenDB 附件的扩展:

这是因为 RavenDB 附件中的数据损坏而发生的事情吗?

此外,每次我得到 502 时,我的 Windows 服务器的事件查看器中都会出现一些日志。

在此处输入图像描述

最重要的错误记录如下:

底部错误记录了这一点;

我不确定它们是否相关,但它们都同时发生在同一个 API 端点上。可悲的是,我似乎无法自己找到造成这种情况的原因。

任何帮助表示赞赏!

编辑:

我使用的是 RavenDB 服务器版本4.0.5。但是我把它升级到4.1.0-rc-41000了几天前。错误发生在两个版本上。

0 投票
1 回答
49 浏览

java - 有没有办法为存储到 RavenDB 的 Java bean 指定集合名称?

我在我的应用程序中使用带有 JAVA ravendb-jvm-client 的 RavenDB,其中现有集合名称不反映 'User.java' -> 'Users' 约定。有没有办法为 java bean 指定正确的集合名称,以便 java 客户端使用它而不是自动约定?类似于 JPA 的 @Table 注释。

我知道我可以在查询中指定集合名称,例如session.query(User.class, Query.collection("custUsers"));......但重复指定它非常冗长。

0 投票
1 回答
166 浏览

database - 如何使用 ClientAPI 重命名 RavenDB 数据库?

有没有办法通过使用 ClientAPI 和操作从代码中重命名 RavenDB 数据库?