我正在开发一个应用程序,其中"热"数据和其他数据之间的使用模式存在巨大差异.我们已选择MongoDB作为我们的数据存储库,并且在大多数情况下,它似乎是我们正在构建的应用程序类型的绝佳匹配.
这是问题所在.将有一个中央文档存储库,必须经常搜索和访问:它的大小现在大约为2 GB,并且在接下来的几年内将增长到4GB.为了提高性能,我们将把DB放在服务器级镜像SSD阵列上,并且考虑到数据的总大小,不要想象内存会成为问题.
系统还将保留记录版本,审计跟踪,客户交互,通知记录等.这将很少被引用,并且可能会变得非常大.我们希望将其置于更传统的旋转磁盘上,因为它很少被访问(我们猜测每年可能会访问一次典型记录四到五次,并且仅需要满足研究和客户服务查询) ,并且可能会变得非常大.
我没有找到任何参考资料,表明MongoDB是否允许我们在不同的磁盘上放置不同的数据库(在Windows下运行mongod,但在我们投入生产时不一定如此).
对此处的所有详细信息感到抱歉,但这些是我们计划部署时必须考虑的主要因素.鉴于蒙戈的倾向抓住所有可用内存,并且它会,在24GB内存马克塞斯一台机器上运行,我们正在努力制定出最佳的生产配置为我们的数据库(一个或多个).
所以我们的选择似乎是:
有多个数据库蒙戈的单个实例 这似乎有简单的优点,但我仍然没有找到如何数据库不同的物理驱动器的机器上拆任何明确的答案.
两个Mongo实例,一个用于"热"数据,另一个用于存档.我不确定Mongo将如何处理mongod竞争资源的两个实例,但我们认为,由于32位版本的服务器限制为2GB的内存,我们可以将它用于存档的东西,而无需它压倒了机器的资源.对于"热"数据,我们可以轻松配置数据库引擎的64位实例以使用SSD阵列,并且考虑到我们的数据相对较小,整个数据库和索引可以直接进行内存映射而不会出现页面错误.
在两个独立的虚拟机中有两个Mongo实例 可以使用VMWare或类似的东西创建两个可以单独托管Mongo的Linux机器.虽然它可能会增加管理负担,但在我看来,这似乎提供了对系统资源使用情况的最精细控制,同时仍然保留了Windows Server主机足够的内存来运行IIS及其自己的进程.
但所有这些都是猜测,因为我们之前没有人曾经做过重大的MongoDB部署,所以我们没有很好的经验基础可供借鉴.
我的实际问题是,是否有选项可以让同一个mongod服务器实例中的两个数据库使用完全独立的驱动器.但是,我们也欢迎任何有关我们三个已确定的部署选项的优缺点的见解.
我正在尝试在Windows 7批处理作业中使用当前日期.批处理作业打开多个文件,这些文件附加了今天的日期.例:
start \\\Directory_Name\Rpts\20130801\0000A060_FileName_20130801.pdf
start \\\Directory_Name\Rpts\20130801\0000P083_FileName_20130801.pdf
start \\\Directory_Name\Rpts\20130801\00007P12_FileName_20130801.pdf
Run Code Online (Sandbox Code Playgroud)
如果我运行echo %date%
我得到:"星期四08/01/2013"
我知道我可以跑步echo %date:/=%
并得到:"Thu 08012013*"
但我想删除"星期四"(今天)并将日期格式化为"20130801"(yyyymmdd)而不是mmddyyyy.
所以最终打开的文件命令看起来像下面%date%
插入了正确的命令: start \\\Directory_Name\Rpts\%date%\00007P12_FileName_%date%.pdf
谁知道我怎么做到这一点?
我正在使用vb.net框架4开发工具,我需要通过IP地址连接到公司服务器,因此员工将能够在家中使用这些应用程序.
我尝试了很多类型的连接字符串,但我仍然收到此错误:
插入到DB时出错在建立与SQL Server的连接时发生了与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:TCP提供者,错误:0 - 无法建立连接,因为目标计算机主动拒绝它.)
我的连接字符串:
Data Source=xxx.xx.xxx.xxx\serverName\SQL2012,1433;Network Library=DBMSSOCN;
Initial Catalog=xxxxx;User ID=xxxxxx;Password=xxxxxxx;
Run Code Online (Sandbox Code Playgroud) 请看下面的代码:
float num = 72000000.69f;
System.out.println(String.format("%.2f", num));
Run Code Online (Sandbox Code Playgroud)
输出:72000000.00
我失去了精确度.我试过将float转换为BigDecimal,然后打印值,但它没有帮助.
有什么方法可以保持精度?
这是我为这个SQL代码得到的错误.我不知道解决问题的最佳方法.
SELECT
muo.VehicleReferenceCode as REF#,
CONVERT(CHAR(10), muo.ActualDeliveryDate, 101) as 'Date In',
vd.Model as Model,
muo.DealerCategoryCode as 'Cat.',
v.PurchaseSourceVendorCode as Vendor,
muo.VendorCost + muo.FactoryOptionsCost as 'VEH Cost',
muo.FreightCostAmt as Freight,
muo.TransferredPDIPartsCost + muo.TransferredPDILaborCost as 'Trans Cost',
SUM(woeid.h_ListPrice) - SUM(woeid.DiscountAmt) as 'Int P&A Charge',
SUM(woeld.RegularLaborAmt) - SUM(woeld.DiscountAmt) as 'Int Labor Charge',
muo.VendorCost
+ muo.FactoryOptionsCost
+ muo.FreightCostAmt
+ muo.TransferredPDIPartsCost
+ muo.TransferredPDILaborCost
+ SUM(woeid.h_ListPrice)
- SUM(woeid.DiscountAmt)
+ SUM(woeld.RegularLaborAmt)
- SUM(woeld.DiscountAmt) as 'VEH Total'
FROM MajorUnitOrder muo
INNER JOIN Vehicle v
ON muo.VehicleIdentificationNum = v.VehicleIdentificationNum …
Run Code Online (Sandbox Code Playgroud) 代码如下:
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String logTime = format.format(new Date((format.parse("2013-6-30").getTime()+25*24*3600*1000)));
String logTime1 = format.format(new Date((format.parse("2013-6-30").getTime()+24*24*3600*1000)));
System.out.println("logTime: "+logTime);
System.out.println("logTime1: "+logTime1);
Run Code Online (Sandbox Code Playgroud)
这是输出:
logTime: 2013-06-05
logTime1: 2013-07-24
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
java ×2
sql-server ×2
batch-file ×1
cmd ×1
database ×1
date ×1
date-format ×1
format ×1
ip-address ×1
memory ×1
mongodb ×1
sql ×1
string ×1