我计划在一个社交网站上工作,我想利用文档和图形数据库来实现所有所需的功能。有没有办法让Meteor.js或Sail.js(或更好的)与ArangoDB或OrientDB合作?或者我应该坚持使用捆绑的MongoDB,并集成一些类似于allegrographDB的东西吗?
Sails.js支持您提到的两个数据库:
- https://www.npmjs.com/package/sails-orientdb
- https://github.com/rosmo/sails-arangodb
除了MongoDB、Postgres和其他几十个。
Sails.js是一个经典的mvc客户端-服务器web应用程序框架,基本上它的ruby on rails是为node.js+webscockets实现的,所以让它与任何后端数据库一起工作所需要的大部分就是对orm进行更改。
Meteor是一种非常不同的野兽,它是一个非常有主见的实时端到端web框架,包括客户端-服务器和数据库,通过表现出非常有主观主义的态度,它解决了实时应用程序中的许多常见问题,在实时应用中,您需要实现一种机制来非常快速地更新所有客户端的其他操作,并处理延迟补偿等问题,数据冲突解决和实时客户端版本管理,这是通过使用web套接字和mongoDB的预写日志来实现的,用于触发数据更新,使Metroe与mongo有一定的耦合。
但是,使用新的orientdb实时查询api,您可以使orientdb与meter很好地协同工作。它是查询结果的pubsub实现,可以用于从数据库通过服务器直接推送到客户端的高效更新,而服务器上的开销非常小。这还远远没有准备好生产,目前只适用于orientedb2.1rc5版本。
我已经实现了一个小型流星演示应用程序作为例子https://github.com/imdark/meteor-orientdb-demo
请查看Meteopedia的备选数据库帖子,他们提到neo4j livedata和minineo4j。
这是Atmosphere包:ostrio:neo4jdriver
您是否有特定的经济或技术原因考虑不使用集成良好的mongoDB作为首选数据库?
除了Travis答案,我还推荐Sails.js.