1

我正在开发我的下一个应用程序,我对使用多语言持久性非常感兴趣。我喜欢能够为不同的服务查询不同的数据结构的想法。我本质上是想同步 MongoDB、Neo4j/Titan、SQL,也许还有 Cassandra/Hbase。

目前,我将所有内容包装在一个 try/catch 块中,如果其中一个失败,则将它们全部回滚。但是,这会占用我的写作时间。我还研究了 Kafka 或 ZeroMQ 等 AMQP 系统,但这些系统似乎更以大数据为中心,而我的应用程序仍然很小,我希望保持高效。

有没有人有这方面的经验?对于小型应用程序来说,MQ 是一个好主意还是我过早地优化了?

谢谢

4

3 回答 3

1

我对 ZeroMQ 了解很多,但对您提到的数据库服务器了解不多。

首先,您对 ZeroMQ 有点困惑。虽然它源自 AMQP 的经验,但它使用 ZMTP 有线协议。这是在 ZeroMQ 开发期间定制设计的 [但其他应用程序现在使用它]。

ZeroMQ 是一个小型且非常快速的 MQ 库,对所有节点都是对称的;它非常适合小型应用程序。这里的问题是您需要在其他系统上使用 ZMTP 的东西,无论是 ZeroMQ 还是桥接器。如果您打算为其他系统制作插件等,那很好。

不过,我假设您正在使用 JMS 与其他系统通信,而不打算为它们开发附加组件。在这种情况下,您可能会被 JMS 困住。Kafka 是一个我还没有赶上的新产品,但 RabbitMQ 是一个很好的、快速的、小型的代理。FWIW。那里有很多经纪人比较供您查找。许多人很狡猾,因为设置的一个小调整会极大地影响性能,并且不一定将苹果与苹果进行比较。如果想在您的环境中比较经纪人的表现,那么您自己做这件事并没有什么捷径可走。

让我感到困惑的一件事是您期望经纪人如何帮助您的回滚性能。您仍然需要以基本相同的方式进行回滚,尽管通过代理异步进行。

于 2014-09-13T17:31:38.240 回答
1

我在 CloudBoost.io ( https://www.cloudboost.io ) 工作,我们构建了一个位于数据库之上的层,并为您提供 Polyglot Persistence 持久性的强大功能。我们集成了 MongoDB、ElasticSearch、Redis、Cassandra 和 Neo4j,并为您提供了一个单一的 API,您可以在其中查询/存储您的数据。我们会根据您的查询/存储请求模式自动将您的数据分片到各种数据库中。

让我知道这是否有帮助。:)

于 2015-04-09T05:48:55.217 回答
0

为了将数据从 MongoDB 同步到 Neo4j,现在有Neo4j Doc Manager项目。它通过监视 MongoDB 的操作并将文档操作转换为属性图模型并立即写入 Neo4j 来工作。

于 2015-10-31T00:12:28.250 回答