我使用RavenDB进行集成测试RunInMemory = true.我正在调试的问题之一与JSON序列化有关.查看内存中序列化JSON数据(作为字符串)的最简单方法是什么DocumentStore?
我一直在使用RavenDB两个小时,所以如果我错过了一些明显的东西,我会道歉.
我正在使用System.Uri类型的属性存储非规范化视图模型.Uri被序列化为一个字符串,我想这是可以的,但是当我加载文档时抛出这个异常:
Message=Could not cast or convert from System.String to System.Uri.
Source=Newtonsoft.Json
StackTrace:
at Newtonsoft.Json.Utilities.ConvertUtils.EnsureTypeAssignable(Object value, Type initialType, Type targetType) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\Utilities\ConvertUtils.cs:line 267
at Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast(Object initialValue, CultureInfo culture, Type targetType) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\Utilities\ConvertUtils.cs:line 244
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 544
Run Code Online (Sandbox Code Playgroud) 我想从一个文本文件(每行是一个类似csv的条目)导入1亿个条目到RavenDB数据库.最快的方法是什么?
补充说明:
我还没有任何索引(我会在插入数据后创建它们).RavenDB在本地计算机上以服务模式运行,没有任何安全性增强(但是因为我还在测试RavenDB).该测试将在2台不同的机器上运行,1)2芯4GB内存2)8芯12 GB内存.
我已经完成了将一部分数据(200万个条目)插入到RavenDB中,但它没有我想要的那么快.通过使用OpenAsyncSession并为每1024条记录调用SaveChangesAsync并再次通过调用OpenAsyncSession创建一个新会话,而不是在500'000条目之后等待返回任务(由SaveChangesAsync返回),我得到一个"索引超出范围"异常我无法根除.但是,如果我等待任务结束(通过创建与核心数相同的任务),过程将成功,但速度不够快.
此代码成功运行:
using (var reader = new StreamReader(@"D:\*\DATA.TXT", Encoding.UTF8))
{
string line = null;
IAsyncDocumentSession session = null;
var tasks = new List<Task>();
var locCount = 0;
while ((line = reader.ReadLine()) != null)
{
if (string.IsNullOrWhiteSpace(line)) continue;
var loc = Parse(line);
if (session == null) session = documentStore.OpenAsyncSession();
session.Store(loc);
locCount++;
if (locCount % 1024 == 0 && session != null)
{
try
{
var t = session.SaveChangesAsync();
tasks.Add(t);
session = null;
}
catch (Exception x)
{ …Run Code Online (Sandbox Code Playgroud) 假设我有这样的结构
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我添加了这些类的所有附加属性?
从使用相同连接代码的Winforms应用程序,RavenDB工作正常.我可以放弃存储和检索文档.
当我尝试在Nancy应用程序中执行相同的操作时,结果完全出乎意料.
Nancy正在侦听端口12345,并且RavenDB在嵌入式模式下运行,UseEmbeddedHttpServer启用并侦听端口8080.
第一个根据请求http://localhost:12345/获取网页响应的请求.任何后续请求都http://localhost:12345/被重定向到/raven/studio.html.如果我做的第一个请求是/widgetsNancy按预期返回小部件的JSON列表,但任何后续请求都会返回:
Could not figure out what to do
Your request didn't match anything that Raven knows to do, sorry...
Run Code Online (Sandbox Code Playgroud)
似乎RavenDB正在劫持Nancy正在监听的端口.什么会导致这种行为?
我正在尝试使用NTFS压缩来压缩RavenDb数据库.它正在努力将文件夹属性更改为Compressed,但是当我启动ravendb服务器时,数据库不再无法访问它.我收到:"无法创建数据库testdb发生了一个或多个错误." "可以打开名为:testdb的数据库发生了一个或多个错误."
有线索吗?谢谢,亚历克斯
在听说NoSQL几年后,我终于开始在.Net MVC应用程序(简单博客)中使用RavenDB.启动并运行嵌入式数据库非常快速且轻松.
但是,我发现在将对象插入文档存储区后,当后续页面刷新时,它们并不总是存在.当我刷新页面时,它们会显示出来.我在某处读到这是由于陈旧的索引.
我的问题是,你应该如何在一直有插件发生的网站上使用它(例如:电子商务).这不会导致陈旧的索引和不可靠的查询结果吗?
我有以下测试用例,我希望通过.但它没有通过RavenDB.
如果我使用MsSql创建完全相同的测试,它确实通过.
var connectionString = "Url=http://localhost:8080";
var store = new DocumentStore();
store.ParseConnectionString(connectionString);
store.Initialize();
using (var scope = new TransactionScope())
using (var session = store.OpenSession())
{
session.Store(dog);
session.SaveChanges();
var dogs = session.Query<Dog>().Customize(x => x.WaitForNonStaleResults()).ToList();
Assert.AreEqual(1, dogs.Count);
scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一些相同的代码,无论我选择什么数据库,这只是我试图通过的测试用例的一个例子.
我尝试过各种各样的东西,比如waitfornonstaleresults,以及allownonautheitative..something等等.
我是Docker的新手.我想要一些专家关于容器设计的意见.我在MongoDB云(Atlas)中建立了一个数据库.我在Docker容器中有Windows应用程序,包括Windows操作系统和基于应用程序的组件.我想使用RavenDB,这个数据库对我来说很新.我的Windows容器的一个组件将与MongoDB和RavenDB进行通信.我的问题是我应该为RavenDB创建不同的docker容器,还是在现有的windows容器中安装RavenDB.这是设计决策问题.我是RavenDB和Docker的新手,所以我的利弊还不清楚.请帮助我.
ravendb ×10
c# ×5
nosql ×3
.net-4.5 ×1
asp.net-mvc ×1
asynchronous ×1
compression ×1
docker ×1
iis ×1
insert ×1
json ×1
mongodb ×1
nancy ×1
ntfs ×1