需求大致上是这样的:数据接收端每5-10个毫秒会从分布式计算网络收到1-10M左右的数据,希望在不影响接收线程接收速度,不丢帧的前提下,把这些数据记录下来。这些数据是以任务名+时间戳+数据的形式发送过来的。希望能根据任务名实时保存到数据库中。现在的问题是有哪些数据库比较适合干这件事。数据库新手,曾经尝试过SQLserver2008,每来一条数据就调用API写入数据库,结果常常崩溃。后来先在内存中缓存一些再写入数据库,但是申请内存多了也容易导致程序崩溃。对sqlserver未做什么优化。考虑NOSQL数据库是不是更适合干这种事情,例如mongoDB什么的。我们现在的临时解决方案有两个,一个是先在内存中缓存,然后新开线程向数据库写入,但是在回放使用数据时非常麻烦,要对数据排序,合并等等。另一个是数据先直接写到硬盘的dat文件中,在接收结束后再慢慢写入数据库,写入后删除硬盘上的文件。问题是这些数据有保密性和访问权限的要求,如果在写入数据库过程中程序崩溃或者程序被强行中止,那么硬盘上的数据就暴露了。所以还是希望能实时入库。
慕田峪4524236
米琪卡哇伊
相关分类