猿问

哪些数据库比较适合实现数据实时入库的需求?

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

慕田峪4524236

如果按照每10ms接收10M数据的话,1秒钟就是1G数据,每小时的数据量高达3.6T,这个大的数据量个人觉得使用传统的关系型数据已经不合适了。如果对查询的灵活性要求不高,建议直接放到日志文件存储。缓存的意义估计不大,一般配置的PCserver,在这样的大数据量下内存是不够用的。至于权限管理,应该和数据存放方式没有直接关系,毕竟不可能让用户直接查询数据库,权限处理在应用程序中处理就可以了。

米琪卡哇伊

队列+mongodb。数据先入队列,然后开多线程入库。----ps:1秒1G数据,1分钟1x60=60G数据,1小时3.6T,一天86.4T数据,一个月就2.5PB。您做的是什么东西==
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答