很多"BAW"(大屁股网站)正在使用数据存储和检索技术,这些技术依赖于带有索引的巨大表,并使用在查询中不会/不能使用JOIN的查询(BigTable,HQL等)处理可伸缩性和分片数据库.当你有大量和非常相关的数据时,它是如何工作的?
我只能推测,这种加入的大部分必须在应用程序方面完成,但这不会开始变得昂贵吗?如果您必须对几个不同的表进行多次查询以获取要编译的信息,该怎么办?是不是多次开始变得比仅仅使用连接更昂贵的数据库?我想这取决于你有多少数据?
对于常用的ORM,它们如何处理无法使用连接?今天在大量使用的ORM中是否有对此的支持?或者大多数必须接近这一级别数据的项目是否倾向于自行推出?
所以这不适用于我现在正在进行的任何项目,但现在已经有几个月了,我只能猜测"最佳实践"是什么.我从来没有必要在任何项目中解决这个问题,因为他们从未达到过需要的规模.希望这个问题能帮助其他人......
如下所述,ORM在没有连接的情况下"无法正常工作".是否有其他数据访问层已经可供处理此级别数据的开发人员使用?
编辑: 有些澄清,Vinko Vrsalovic说:
"我相信窃笑者想要讨论NO-SQL,其中事务数据被非规范化并在Hadoop或BigTable或Cassandra方案中使用."
这正是我所说的.
抓住xkcd参考的人的奖励积分.
我有一个项目,通过他们的API为另一个应用程序添加一些可扩展性.但是,我希望能够为其应用程序的多个版本使用相同的项目,因为大多数代码都是相同的.
但是,每个版本的应用程序都需要引用该版本软件的正确程序集.他们将程序集加载到GAC中,所以即使我可以根据构建配置指定要使用的程序集的版本,我也没关系.有没有办法从VS内部执行此操作,还是需要外部构建工具?
我正在尝试制定计划,允许用户使用LDAP使用MySQL数据库(实际上很多)进行身份验证.更具体地说,ActiveDirectory.数据库可能会通过应用程序而不是网络访问.我有什么选择?
编辑:
好吧.似乎没有"官方"方式允许使用LDAP在MySQL上进行身份验证.还有哪些其他选择?我们可以将LDAP用户和密码同步到MySQL用户表吗?
这是我很难找到答案的问题.这是我没有的东西:
这是我DO有:
这是我尝试的一个镜头,似乎是不成功的(人和地方和机器的名称已被改变,以保护无辜):
失败的甜网络图http://i48.tinypic.com/or1a3b.png
SVN为什么不工作?
嗯,我怀疑SVN不喜欢SOCKS.有人有建议吗?
我已经使用RegisterDeviceNotification注册了一个窗口,并且可以成功接收DEV_BROADCAST_DEVICEINTERFACE消息.但是,dbcc_name
返回的结构中的字段始终为空.我所拥有的结构定义如下:
[StructLayout(LayoutKind.Sequential)]
public struct DEV_BROADCAST_DEVICEINTERFACE
{
public int dbcc_size;
public int dbcc_devicetype;
public int dbcc_reserved;
public Guid dbcc_classguid;
[MarshalAs(UnmanagedType.LPStr)]
public string dbcc_name;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用WM_DEVICECHANGE消息Marshal.PtrToStructure
的LParam.
这应该有用吗?
或者甚至更好......是否有另一种方法可以在连接时获取设备的名称?
编辑(02/05/2010 20:56GMT):
我发现如何通过执行以下操作来填充dbcc_name字段:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct DEV_BROADCAST_DEVICEINTERFACE
{
public int dbcc_size;
public int dbcc_devicetype;
public int dbcc_reserved;
public Guid dbcc_classguid;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=255)]
public string dbcc_name;
}
Run Code Online (Sandbox Code Playgroud)
但我仍然需要一种从int dbcc_name获取"友好"名称的方法.它看起来如下:
\?\ USB#VID_05AC&PID_1294&MI_00#0#{6bdd1fc6-810f-11D0-BEC7-08002BE2092F}
而我真的只想说"苹果iPhone"(在这种情况下就是设备).
因此,我正在寻找一个很好的NHibernate事件列表,这些事件实际上描述了它们何时被触发,在典型场景中(不仅仅是列表).IE之类的东西
PreUpdateEventListener - 当已经持久的对象发生更改时触发
我目前只是通过源头试图解决它,但它有点痛苦,我认为有人必须已经在某个时候做过这一点.
我有一个应用程序,在整个公司的数百台计算机上使用,我必须修改应用程序的安装目录中的INI文件.用户可以随意安装应用程序,并且可以在任何给定时间安装多个版本的应用程序.我需要能够找到该安装目录.
到目前为止我考虑过的方法:
好吧,让我们听一下以编程方式确定Windows应用程序的安装目录的任何其他方法.
一旦我在NHibernate中映射了我的域,我怎样才能在我的代码中的其他地方反向查找这些映射?
例:
由于Pony
某种原因,该实体被映射到名为"AAZF1203"的表.(愚蠢的遗留数据库表名!)我想只使用typeof(Pony)
因为我必须在其他地方编写查询来从NH映射中找出该表名.
private const string LegacyPonyTableName = "AAZF1203";
[Test]
public void MakeSureThatThePonyEntityIsMappedToCorrectTable()
{
string ponyTable = GetNHibernateTableMappingFor(typeof(Pony));
Assert.AreEqual(LegacyPonyTableName, ponyTable);
}
Run Code Online (Sandbox Code Playgroud)
换句话说,GetNHibernateTableMappingFor(Type t)
需要看起来像什么?
所以,我对Windows窗体开发很不熟悉.
我正在尝试创建一个"嘿,我正忙着做东西"的组件,只是旋转形状.我希望这个控件是瞬态的,并且可以在任何其他控件之上绘制.该类直接从Control继承.
所以我在构造函数中有这个:
SetStyle(ControlStyles.Opaque, true);
Run Code Online (Sandbox Code Playgroud)
还有这个:
protected override CreateParams CreateParams
{
get
{
CreateParams parms = base.CreateParams;
parms.ExStyle |= 0x20;
return parms;
}
}
Run Code Online (Sandbox Code Playgroud)
这让我获得了一个可以在其他控件之上绘制的控件.
现在我的问题是这个.我每秒重复几次控制,给动画一个平滑的动画.但是,我无法弄清楚如何清除前一帧中绘制的内容.使用e.Graphics.Clear(Color.Transparent)
在OnPaint
原来整个控制黑色.
有没有办法清除控件的绘制内容?
我注意到调整控件大小会清除背景.
不起作用的事情
如何强制NHibernate在多对多集合中执行右外连接或INNER连接而不是LEFT外连接?
我想要这样做的原因是因为应用于集合元素的过滤.使用左连接时,您将获得与未过滤查询相同的行数,但过滤掉的元素只显示所有字段的NULL.但是,使用右连接时,将从查询中返回正确的行数和元素数.
我希望可以在集合的映射中的某处指定连接.
c# ×4
nhibernate ×3
.net ×2
assemblies ×1
bigtable ×1
events ×1
gdi+ ×1
guid ×1
hadoop ×1
installation ×1
join ×1
ldap ×1
mysql ×1
nosql ×1
orm ×1
proxy ×1
putty ×1
reference ×1
svn ×1
tortoisesvn ×1
transparent ×1
tunnel ×1
winapi ×1
winforms ×1
wmi ×1