我正在认真考虑使用Meteor框架来构建future...but中的每个POC和应用程序,因为我很少使用需要这种遵从性的多文档原子事务来使用符合ACID标准的数据库。
流星目前强烈依赖MongoDB语法和存储引擎(这意味着没有“事务”相关语法可用.)
我目前正在评估任何允许这种酸性能力的解决方案:
这3种解决方案是Meteor路线图的良好候选方案,如这里所示
这些解决方案的利弊是什么?哪个是最先进的?您认为在像ACID兼容的db这样的NoSQL中保存Meteor文档的解决方案是什么?
发布于 2015-05-11 16:06:31
我终于得出了自己的结论..。
我将有两个平台:
我们仍然非常欢迎任何意见,并将予以考虑和答复。
发布于 2015-05-08 04:50:41
sqlAndMeteor
如果你像我一样,你爱流星,却恨蒙古。在Meteor的Trello (https://trello.com/b/hjBDflxp/meteor-roadmap)中,最受欢迎的特性是PostgreSQL或MySQL。
由于在Meteor中没有这方面的日期,我在这里总结我发现的部分解决方案。
1.-只对客户端查询使用SQL。
让我们直截了当地说,Mongo在常见的数据操作上很糟糕,因此能够使用SQL查询数据(包括联接、结块等等)将减轻很多痛苦。有些包允许您在客户机中使用SQL,至少用于查询:最简单的包是一个旧的(2010)实用程序SqlLike (http://www.thomasfrank.se/sqlike.html)。镇上的新玩家是alaSQL,这是@agershun (https://github.com/agershun/alasql)积极开发的。SqlLike的优势是它只有10k。当然,AlaSQL的功能要强大得多,但是在联合和聚合中使用SqlLike来代替mongosintax时,SqlLike是可以的。
通过这两种方法,您可以在您的助手中做这样的事情:
productsSold:function(){
var customerSalesHistory=salesHistory.find({cutomerId:Session.get('currentCustomer')}).fetch();
var items=products.find().fetch();
return alasql("select item.name, sales.ordered as sumaVentas from ? sales, ? items
where items.Id=sales.itemId",[customerSalesHistory,items]);
}2.-直接SQL支持的实验。
一些软件包试图用MySql或PostgreSQL取代Mongo (和minimongo)。@numtel的MySql包是Meteor https://github.com/numtel/meteor-mysql,PostgreSQL是Meteor (https://github.com/numtel/meteor-pg)。这两种方法都是解决问题的好尝试,但都存在一些问题,而且在某种程度上难以适应。
哈克反应堆的一个团队已经形成了流星流,它的第一个产品是与流星,流星-邮政from (https://github.com/meteor-stream/meteor-postgres)的PostgreSql集成。它看起来非常好,并在客户端使用alaSql来替换minimongo。
这两种方法都很好,但也存在一些问题:
他们中断了对流星的部署。他们是非常,非常年轻,并没有接近生产准备的AFAIK,他们仍然需要调整通常的酒吧-子新税,这可能会引起与其他流星软件包的兼容性问题。3.-仍然使用Mongo,但作为MySql数据库的简单存储库。
此选项维护所有Meteor的特性,并使用Mongo作为MySql或PostgreSql数据库的时态存储库。
这方面的一项出色尝试是mysql-- @perak (https://github.com/perak/mysql-shadow)的影子。它按照它说的做,让Mongo与MySql保持同步,让我们用MySql来处理数据。
坏消息是,开发人员将不再继续维护它,但是所做的工作足以处理简单的场景,在这些场景中,您没有复杂的触发器来更新其他表或类似的东西。
对于功能齐全的同步,您可以使用SymmetricsDS (http://www.symmetricds.org),这是一个经过很好测试的数据库复制器。当然,这涉及到设置一个新的java服务器,但到目前为止,这是确保您能够在一个简单的MySql、PostgreSQL、server、Informix数据库的存储库中转换Mongo数据库的最佳方法。我得亲自检查一下。
就目前而言,MySQL阴影似乎是一个足够好的解决方案。
这种方法的一个优点是,您仍然可以使用所有标准Meteor功能、包、流星部署等等。你不需要做任何事情,只需要建立同步机制,而且你没有破坏任何东西。
另外,如果有一天Meteor团队使用SQL集成中筹集到的一些资金,您的应用程序更有可能按原样工作。
发布于 2015-03-30 17:14:05
如果MySQL对您有用,那么我使用了流星-mysql包,它运行得很好。
https://stackoverflow.com/questions/29348955
复制相似问题