您能否告诉我如何在RavenDb中执行简单的全文搜索.数据库存储文件:Movie {Name ="Pirates of the Carribean"}.我希望在搜索短语"Pirates Carribean"或任何其他单词组合中找到此文档.
我需要找到raven数据库中的文档数量,以便我可以正确地将文档分页.我有以下实现 -
public int Getcount<T>()
{
IQueryable<T> queryable = from p in _session.Query<T>().Customize(x =>x.WaitForNonStaleResultsAsOfLastWrite())
select p;
return queryable.Count();
}
Run Code Online (Sandbox Code Playgroud)
但如果计数太大,那么它会超时.
我尝试了常见问题解答中建议的方法 -
public int GetCount<T>()
{
//IQueryable<T> queryable = from p in _session.Query<T>().Customize(x => x.WaitForNonStaleResultsAsOfLastWrite())
// select p;
//return queryable.Count();
RavenQueryStatistics stats;
var results = _session.Query<T>()
.Statistics(out stats);
return stats.TotalResults;
}
Run Code Online (Sandbox Code Playgroud)
这总是返回0.
我究竟做错了什么?
使用RavenDB存储文件数据的当前最佳实践是什么?(CDN或RavenDB附件)
我一直在关注Rob Ashton的优秀演示应用程序RavenDB Photo Gallery Project.在演示项目中,他将文件存储为RavenDB附件,但似乎提到这不是最佳实践.当前版本的RavenDB对此有何最新想法?
如果我要创建一个基本的个人会计系统(因为我就是这样 - 这是一个关于我熟悉的领域的业余爱好项目,以避免陷入需求的困境),像RavenDB这样的NoSQL /文档数据库是存储帐户的一个很好的候选人,更重要的是,针对这些帐户的交易?如何选择哪个实体是"文档"?
我怀疑这是其中一个案例实际上是一个SQL数据库是合适的并试图去NoSQL是错误的,但是当我想到我对CQRS和事件采购知之甚少时,我想知道实体/文件是否是实际上是帐户,并且事务是针对它存储的事件,并且当这些"事件"发生时,我的应用程序也可能写出一个易于查询的读取存储,如SQL数据库.
提前谢谢了.
基本冲突.
SignalR希望Newtonsoft.Json版本4.0.7或更高版本,而RavenDB希望版本等于4.0.5.这显然意味着它们不能并排安装.
因此,除了从其中一个中下载源代码并获取本地的依赖关系然后必须检查从中创建的二进制文件,是否有可能保持使用NuGet管理的依赖项,并且可能只是转发DLL调用(像Mvc那样每个新版本都有)?
我有一个我开发的ASP.Net MVC 3应用程序,它使用RavenDB Embedded作为数据的集成后备存储,我使用本教程作为开始使用RavenDB Embedded创建MVC应用程序的基础.我已经能够在我的开发PC上运行得很好,但是当它在我们运行IIS6的Windows Server 2003 Web服务器上部署时,它会抛出以下错误:
无法访问文件,文件已锁定或正在使用说明:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:Microsoft.Isam.Esent.Interop.EsentFileAccessDeniedException:无法访问文件,文件被锁定或正在使用中
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:
[EsentFileAccessDeniedException:无法访问文件,文件被锁定或正在使用] C:\ Work\ravendb\SharedLibs\Sources\managedesent-61618\EsentInterop\Api中的Microsoft.Isam.Esent.Interop.Api.Check(Int32错误). cs:2736 Raven.Storage.Esent.TransactionalStorage.Initialize(IUuidGenerator uuidGenerator)在c:\ Builds\RavenDB-Stable\Raven.Storage.Esent\TransactionalStorage.cs:207
[InvalidOperationException:无法
在c:\ Builds\RavenDB-Stable\Raven中打开事务存储:C:\ inetpub\wwwroot\MyApp\App_Data\Database\RavenDB\Data] Raven.Storage.Esent.TransactionalStorage.Initialize(IUuidGenerator uuidGenerator) .Storage.Esent\TransactionalStorage.cs:222 Raven.Database.DocumentDatabase..ctor(InMemoryRavenConfiguration配置)在c:\ Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:185
Raven.Client.Embedded.EmbeddableDocumentStore.InitializeInternal ()在c:\ Builds\RavenDB-Stable\Raven.Client.Embedded\EmbeddableDocumentStore.cs:143中的Raven.Client.Document.DocumentStore.Initialize()在c:\ Builds\RavenDB-Stable\Raven.Client.Lightweight\Document\DocumentStore.cs:496 MyApp.CompositionRoot.CreateControllerFactory()in ...\MyApp\CompositionRoot.cs:36 MyApp.CompositionRoot..ctor()in ..\MyApp\CompositionRoot.cs:17
MyApp.MvcApplication.Application_Start ()in ... MyApp\Global.asax.cs:38[HttpException(0x80004005):无法打开事务存储:C:\ inetpub\wwwroot\MyApp\App_Data\Database\RavenDB\Data]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context,HttpApplication app)+3985477
System.Web.HttpApplication .RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext context,MethodInfo [] handlers)+191
System.Web.HttpApplication.InitSpecial(HttpApplicationState state,MethodInfo [] handlers,IntPtr appContext,HttpContext context)+325
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext ,HttpContext context)+407
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+375[HttpException(0x80004005):无法打开事务存储:C:\ inetpub\wwwroot\MyApp\App_Data\Database\RavenDB\Data]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+11524352 System.Web.HttpRuntime.EnsureFirstRequestInit( HttpContext context)+141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+4782309
引用的CompositionRoot.cs类中的错误源是Embeddable Document Store的初始化时.
private …Run Code Online (Sandbox Code Playgroud) 我正在努力使RavenFS正常运行,并希望我能得到一些帮助.
我遇到了两个单独的问题,一个是将文件上传到ravenfs,而在服务中使用嵌入式数据库会导致ravendb崩溃,而另一个同步两个实例以相同方式设置会导致目标服务器崩溃.
我已经尽力记录这个......代码和重现这些问题的步骤都在这里(https://github.com/punkcoder/RavenFSFileUploadAndSyncIssue),视频位于这里(https://youtu.be/fZEvJo_UVpc).我尝试在问题跟踪器中查找这些问题,并没有找到与其相关的直接内容,但我可能错过了一些内容.
我有以下测试跳过 -
[Test]
public void RavenPagingBehaviour()
{
const int count = 2048;
var eventEntities = PopulateEvents(count);
PopulateEventsToRaven(eventEntities);
using (var session = Store.OpenSession(_testDataBase))
{
var queryable =
session.Query<EventEntity>().Customize(x => x.WaitForNonStaleResultsAsOfLastWrite()).Skip(0).Take(1024);
var entities = queryable.ToArray();
foreach (var eventEntity in entities)
{
eventEntity.Key = "Modified";
}
session.SaveChanges();
queryable = session.Query<EventEntity>().Customize(x => x.WaitForNonStaleResultsAsOfLastWrite()).Skip(0).Take(1024);
entities = queryable.ToArray();
foreach (var eventEntity in entities)
{
Assert.AreEqual(eventEntity.Key, "Modified");
}
}
}
Run Code Online (Sandbox Code Playgroud)
PopulateEventsToRaven只是将2048个非常简单的文档添加到数据库中.
第一个跳过组合获得前1024个doucuments修改文档,然后提交更改.
下一个跳过组合再次想要获得前1024个文档,但这次它得到文档号1024到2048,因此测试失败.为什么这样,我会再次期待第一个1024?
编辑:我已经变了,如果我不修改文档,行为就好了.
面向对象和文档数据库之间有什么区别?
我没有使用面向对象的数据库,但是当我使用文档数据库(RavenDb)时,我存储和读取通常的面向对象的类没有问题.
是否存在一个公式/估计/感觉,根据文档种类数,每个文档的字段数和它们之间的关系数,向我们展示RavenDB数据库中索引的最佳数量是多少?
补充说明:
据我所知(第一)我们在RavenDB中查询索引,而不是文档和(第二)索引就像物化视图一样,因此它们可能会花费很多.我需要知道有多少索引会损害RavenDB在更新它们时的性能并使延迟太大而无法忽略?
由于Raven/MaxNumberOfParallelIndexTasks设置为当前计算机中的处理器数量,因此它意味着其他索引的索引过程将阻塞,直到当前索引任务结束?或者他们是一次又一次的部分更新?
ravendb ×10
nosql ×2
asp.net-mvc ×1
attachment ×1
c# ×1
cdn ×1
cqrs ×1
file-upload ×1
nuget ×1
performance ×1
ravenfs ×1
search ×1
signalr ×1