Mongodb 什么';从不同客户处收集数据的最佳做法是什么?

Mongodb 什么';从不同客户处收集数据的最佳做法是什么?,mongodb,client-server,database,Mongodb,Client Server,Database,以下是我的用例的详细信息: 我的数据是什么。。 会有用户体验、错误报告、状态信息等。这些数据是零散的,将来可能会发生变化。所以我计划使用NoSQL,可能是mongodb,在服务器中保存数据 客户是什么。。 它们是用不同语言编写的客户端,如C++、C++、LabVIEW等。有些甚至不能访问mongodb驱动程序,所以当然不能直接与数据库通信。需要下面这样的框架 客户端->某些协议->代理->数据库 由于这些客户机不是web客户机,所以使用http的常见web服务器可能不适合我的情况,对吗?对于协议

以下是我的用例的详细信息:

  • 我的数据是什么。。 会有用户体验、错误报告、状态信息等。这些数据是零散的,将来可能会发生变化。所以我计划使用NoSQL,可能是mongodb,在服务器中保存数据

  • 客户是什么。。 它们是用不同语言编写的客户端,如C++、C++、LabVIEW等。有些甚至不能访问mongodb驱动程序,所以当然不能直接与数据库通信。需要下面这样的框架

  • 客户端->某些协议->代理->数据库

    由于这些客户机不是web客户机,所以使用http的常见web服务器可能不适合我的情况,对吗?对于协议、代理和数据库,甚至是一个新的框架,有什么建议吗。 我的目标是让客户能够尽可能方便地发送数据


    谢谢大家!

    这并不是什么新鲜事,而是一个消息驱动的应用程序,这是一种众所周知的模式

    我主要是用Java实现的,所以我将在这里继续使用这种语言

    在这里,光有经纪人是不够的。假设您使用MessageBroker,您仍然需要将数据放入数据库,因为MQ是。。。消息队列。因此,您需要一个部件来从MQ中获取消息,根据您的业务规则处理它们,并将它们存储在(正确的)数据库实例和正确的集合/存储桶/表中。当然你可以手工写这一部分,但那几乎是对轮子的再发明。有一个“消息路由和中介引擎”的概念,这里最常用的建议是,它必须与数据库和其他所谓的消费者和生产者进行通信。这是关键。通常,如果可能,您的客户机应该直接将其数据发送到MessageBroker。但是,如果他们不能,他们可以简单地发送文本文件或拨打REST电话——这里列出的选项实在太多了。可以通过Apache Camel中的“路由”(一组消费者、转换规则和生产者,以最简单的形式)将这些传入数据预处理并标准化为您的标准格式,并将其作为AMQP消息发送到MQ。从那里,另一条骆驼路线可以处理AMQP消息,应用您的业务规则并将数据存储在数据库中。。。或者你想到的其他任何事情(例如发送电子邮件)

    因此,此解决方案支持传入和传出消息的多种协议(只要Camel支持),并且您的业务规则位于一个集中且定义良好的位置


    为了实现这一点,我强烈建议使用,这是ActiveMQ、Camel和管理组件和业务规则的系统的一个发行版。

    最后,我认为使用http协议的web服务器可以适合该用例

    我最想要的是一个通用API,用于不同类型的客户端将数据保存到云。Http有GET、POST、PUT、DELETE方法,所以我认为,有了RESTful API,它自然适合于操作数据

    最后我的解决方案是Node.js(Express)+Mongodb(一个非常常见的组),并通过expressweb服务器提供了一个restfulapi,客户端可以使用http方便地操作数据。而且,它重量很轻,很容易开始


    这里有一些教程:

    谢谢。我不太熟悉这种模式,但您提到的似乎是企业级解决方案。Camel->MQ->Camel(许多业务规则)->数据库(或其他),它支持的功能比我需要的更多。我希望可能有一些轻量级的解决方案可以很快实施。仅仅使用一个协议和一个服务器代理就可以让客户端更容易地保存数据吗?不完全是这样。因为您仍然需要所有客户端使用相同的协议,甚至需要生成相同的数据。