外部服务器上将有 2 个应用程序。第一个应用程序每秒从 Internet 上的流中获取数据,并且每分钟将数据的最终结果输入数据库。第二个应用程序将捕获向数据库添加数据的事件,然后每分钟获取一个新添加的行进行计算。以前,我总是使用 SQLite 来轻松地将数据库传输到不同的设备。
- 对于这种需求,不同的 DBMS 有什么区别吗?或者这些任务的速度是否大致相同?
- 在 SQLite 的情况下,将数据库存储在服务器上、安装所有内容,或者只是在一个文件中,还有什么更好的呢?
外部服务器上将有 2 个应用程序。第一个应用程序每秒从 Internet 上的流中获取数据,并且每分钟将数据的最终结果输入数据库。第二个应用程序将捕获向数据库添加数据的事件,然后每分钟获取一个新添加的行进行计算。以前,我总是使用 SQLite 来轻松地将数据库传输到不同的设备。
如果您需要进行您所描述的此类原始查询,那么原则上任何 DBMS 都可以,因为有许多适用于 .NET 的 DBMS 的适配器。
由于是免费的,同时又没有任何多余的装饰,一些 MySQL 就可以了。
如果您的资源不受限制,并且有可能在将来不得不削减庞大的统计查询,那么您可以使用“老大哥”MS SQL、Oracle、Postgres(它似乎也是免费的),因为它们有很多分析功能和芯片:
但是如果有开发数据库的前景,我更喜欢MS SQL,因为很多芯片都是开放的,比如你可以用C#写CLR程序集,在DBMS中使用。
您将无法在任何 DBMS 中以正常方式捕获向数据库添加行的事件 - 最后,一切都将归结为通过计时器轮询数据库。如果此选项适合您,您可以使用任何 DBMS。
否则,我建议使用网络通信:让第一个应用程序直接向第二个应用程序发送数据。出于这些目的,将 WCF 与 NetTcpBinding 绑定一起使用会很方便:它只是双向的,即 允许您实现正常的发布-订阅模型。如果 WCF 不可用,您可以使用 ZeroMQ 或在 tcp 套接字上制作自己的自行车。