我的大部分经验是在MSFT堆栈上进行的,但是我现在正在做一个辅助项目,通过基于LAMP堆栈的廉价托管帮助个人站点的人。我安装Extras的选项是有限的,所以我想知道如何编写数据访问代码而不将原始查询嵌入到.php文件中。
即使使用.NET,我也喜欢保持简单。我通常为所有内容编写存储过程,并且我有一个帮助程序类,该类包装了用于执行过程和返回数据集的所有调用。我不是在寻找成熟的ORM,但这可能是解决之道,其他查看此问题的人可能正在寻找。
请记住,我使用的是每月7美元的GoDaddy帐户,因此我仅限于基本软件包中已安装的内容。
编辑:谢谢rix0rr,Alan,Anders,Dragon,我将检查所有这些内容。我将问题编辑为对ORM解决方案更开放,因为它们是如此受欢迎。
我正在寻找人们在实现服务客户端TCP(或UDP)请求的服务器应用程序时使用的任何策略:设计模式,实现技术,最佳实践等.
我们假设为了这个问题的目的,请求是相对长寿的(几分钟),并且流量是时间敏感的,因此在响应消息时没有可接受的延迟.此外,我们既处理来自客户端的请求,又将自己的连接发送到其他服务器.
我的平台是.NET,但由于底层技术与平台无关,我很有兴趣看到任何语言的答案.
我目前正在研究MongoDb作为一个可能的数据库选项,我在处理Guid序列化时遇到了麻烦.我一开始认为这可能是C#驱动程序序列化中的一个错误,但现在我认为这更像是一个天真的假设.
为了帮助我将Bson base64表示来回转换为Guids,我写了几个小的powershell函数来帮助:
function base64toguid
{
param($str);
$b = [System.Convert]::FromBase64String($str);
$hex = "";
foreach ($x in $b) {
$hex += $x.ToString("x2");
}
$g = new-object -TypeName System.Guid -ArgumentList $hex;
return $g;
}
function guidtobase64
{
param($str);
$g = new-object -TypeName System.Guid -ArgumentList $str;
$b64 = [System.Convert]::ToBase64String($g.ToByteArray());
return $b64;
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题的一个例子:
:) guidtobase64("53E32701-9863-DE11-BD66-0015178A5E3C");
ASfjU2OYEd69ZgAVF4pePA==
:) base64toguid("ASfjU2OYEd69ZgAVF4pePA==");
Guid
----
0127e353-6398-11de-bd66-0015178a5e3c
Run Code Online (Sandbox Code Playgroud)
从mongo shell:
:) mongo
MongoDB shell version: 1.6.5
connecting to: test
> b = new BinData(3, "ASfjU2OYEd69ZgAVF4pePA==");
BinData(3,"ASfjU2OYEd69ZgAVF4pePA==")
> b.hex();
127e353639811debd66015178a5e3c
> …Run Code Online (Sandbox Code Playgroud) 那么如何让它们在测试和生产环境之间保持同步?
当谈到数据库表的索引时,我的理念是它们是编写查询数据库的任何代码的不可或缺的一部分.如果不分析对索引的影响,则无法引入新查询或更改查询.
因此,我尽力使我的索引在我的所有环境之间保持同步,但说实话,我在自动化方面做得并不好.这是一种随意的手动过程.
我定期检查索引统计信息并删除不必要的索引.我通常通过创建一个删除脚本来执行此操作,然后将其复制回其他环境.
但是这里和那里的索引在正常过程之外被创建和删除,并且很难看出差异在哪里.
我发现一件真正有用的事情就是使用简单的数字索引名称,比如
idx_t_01
idx_t_02
Run Code Online (Sandbox Code Playgroud)
其中t是表的简短缩写.当我试图让所有相关的列变得聪明时,我发现索引维护是不可能的,例如,
idx_c1_c2_c5_c9_c3_c11_5
Run Code Online (Sandbox Code Playgroud)
区分这样的索引太难了.
有没有人有一个非常好的方法将索引维护集成到源代码控制和开发生命周期?