我是新手NOSQL的新手,最近对mongoDB很感兴趣.我正在从头开始创建一个新网站,并决定使用MONGODB/NORM(用于C#)作为我唯一的数据库.我一直在阅读很多关于如何正确设计文档模型数据库的内容,我认为在很大程度上我的设计运行得非常好.我大约6个月进入我的新网站,我开始看到我需要一遍又一遍地处理数据复制/同步的问题.从我读到的内容来看,这在文档模型中是可以预期的,并且对于性能而言是有意义的.IE将嵌入的对象粘贴到文档中,因此读取速度快 - 没有连接; 但是当然你不能总是嵌入,所以mongodb有这个DbReference的概念,它基本上类似于关系数据库中的外键.
所以这是一个例子:我有用户和事件; 两者都获得自己的文件,用户参加活动,活动有用户参加.我决定将有限数据的事件列表嵌入到User对象中.我还将用户列表嵌入到Event对象中作为"与会者".现在的问题是我必须使用户与同样嵌入在Event对象中的用户列表保持同步.正如我所读到的,这似乎是首选的方法,也是NOSQL做事的方式.检索很快,但回退是当我更新主用户文档时,我还需要进入Event对象,可能找到对该用户的所有引用并更新它.
所以我的问题是,这是人们需要处理的一个非常普遍的问题吗?在你开始说"可能NOSQL策略不适合我在这里尝试做的事情"之前,这个问题要发生多少?什么时候不必加入连接的性能优势变成了一个缺点,因为你很难在嵌入式对象中保持数据同步并对数据库执行多次读取操作?
在.NET中使用MongoDB和NoRM.
让我感到困惑的是 - 没有交易
(不能只是说MongoConnection.Begin/EndTransaction
或类似的东西).
我想在出现故障时使用工作单元模式和回滚更改.
如何通过ITransaction丰富我的存储库还有一个干净的方法吗?
所以,有
作为MongoDB的C#驱动程序可用.
哪一个是最成熟稳定的?你为什么选择其他两个呢?
他们生产准备好了吗?
当我在global.cs文件中进行绑定时,我不太确定何时应该使用SingletonScope()vs TransientScope()vs RequestScope().
我有一个例如我对MongoSession的调用(使用NoRM和mvcStarter项目http://mvcstarter.codeplex.com/)设置为SingletonScope但是我创建了一个使用这个MongoSession对象的存储库来更容易地调用Mongo,例如,我有一个NewsRepository,它使用MongoSession从数据中获取我的新闻项.作为一个例子,我有一个调用,它获取DisplayOnHome设置为true的新闻项目,并获取CreationDate的最新信息.这样的存储库应该是SingletonScope还是RequestScope会更合适?
我什么时候应该使用它们?为什么?
如何||a - b||_1 = sum(|a_i - b_i|)
在Python中计算两个向量差异的1范数?
a = [1,2,3,4]
b = [2,3,4,5]
||a - b||_1 = 4
Run Code Online (Sandbox Code Playgroud) 我对MongoDB和NoSQL很新,我刚刚开始使用MongoDB/Norm/ASP.NET MVC 3构建一个站点.
我想知道我应该如何确定与Mongo数据库的连接.
现在我有一个Basecontroller,它实现了MongoSession和onActionExecuted我处理它所以我所有的派生控制器都可以访问我的MongoSession.MongoSession类在其构造函数中打开一个连接,并将它放在Dispose()上,就像它今天的工作方式一样.
private IMongo _mongo;
public MongoSession()
{
_mongo = Mongo.Create("connString");
}
public void Dispose()
{
_mongo.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
如果我在控制器中做其他事情,我有点担心它可能会持续打开太长时间.
这种方法是否应该不会冒太多连接的风险,或者我应该做更像下面的示例方法?
public void Add<T>(T item) where T : class, new()
{
using (var mongo = Mongo.Create("connString"))
{
mongo.GetCollection<T>().Insert(item);
}
}
Run Code Online (Sandbox Code Playgroud)
另一个跟进问题是:
通过Norm"昂贵"操作打开和关闭MongoDB连接?
database-connection scoping mongodb norm mongodb-.net-driver
我正在与Mongo,NoRM和MVC .Net开始一个新项目.
在我使用FluentNHibernate之前,我的ID是整数,现在我的ID是ObjectId.因此,当我有一个编辑链接时,我的URL看起来像这样:
网站/管理/编辑/ 23,111,160,3,240,200,191,56,25,0,0,0
并且它不会作为ObjectId自动绑定到我的控制器
你有什么建议/最佳实践可以解决这个问题吗?我是否每次都需要对ID进行编码/解码?
谢谢!
我需要规范化N个整数的向量,以便:
例如:
如果我有一个矢量
V = [2,2,1,0]
Run Code Online (Sandbox Code Playgroud)
规范化的矢量应该是:
V_norm = [0.4,0.4,0.2,0] % 0.4+0.4+0.2 = 1
Run Code Online (Sandbox Code Playgroud)
我尝试了在这个社区和网络上找到的许多解决方案,最后我用这个代码做了:
part = norm(V);
if part > 0
V_norm = V/part;
else % part = 0 --> avoid "divide by 0"
V_norm = part;
end
Run Code Online (Sandbox Code Playgroud)
这有效的问题如果:
但如果我有不同的情况,虽然结果是成比例的,但总和不是0.例如:
V = [1,0,1]
V_norm = [0.74,0,0.74]
V = [1,1,1]
V_norm = [0.54,0.54,0.54]
Run Code Online (Sandbox Code Playgroud)
(我不确定这个数字是否正确,因为我现在不能使用Matlab,但我确定总和> 1)
Ahy暗示?
先感谢您
我正在尝试使用MongoDB,C#和NoRM来处理一些示例项目,但是在这一点上,我在围绕数据模型时遇到了困难.使用RDBMS的相关数据是没有问题的.然而,在MongoDB中,我很难决定如何处理它们.
让我们以StackOverflow为例......我可以理解问题页面上的大部分数据都应该包含在一个文档中.标题,问题文本,修订,评论......在一个文档对象中都很好.
我开始变得模糊的问题是用户数据,例如用户名,头像,声誉(特别经常变化)...每次用户更改时,您是否会对数千个文档记录进行非规范化更新或以某种方式链接数据在一起?
在不导致每次页面加载时发生大量查询的情况下,实现用户关系的最有效方法是什么?我注意到DbReference<T>
NoRM中的类型,但还没有找到一种很好的方法来使用它.如果我有可空的可选关系怎么办?
感谢您的见解!
我在Pyzo中使用Python 3.请问你能告诉我为什么linalg.norm函数不能识别axis参数.
这段代码:
c = np.array([[ 1, 2, 3],[-1, 1, 4]])
d=linalg.norm(c, axis=1)
Run Code Online (Sandbox Code Playgroud)
返回错误:
TypeError:norm()得到一个意外的关键字参数'axis'
norm ×10
mongodb ×7
c# ×3
asp.net-mvc ×2
python ×2
.net ×1
duplicates ×1
matlab ×1
ninject ×1
normalize ×1
numpy ×1
scoping ×1
transactions ×1
vector ×1