在postgresql中使用meteor
我想使用Meteor连接到我们的关系数据库(PostgreSQL)。有没有将Meteor连接到其他数据库的经验 我想我们必须编写自己的连接器,才能将Meteor的优秀功能与PostgreSQL结合使用 更新: 见下面的答案。由于这个问题仍然受到关注,这里是解决方案的链接在postgresql中使用meteor,sql,postgresql,meteor,Sql,Postgresql,Meteor,我想使用Meteor连接到我们的关系数据库(PostgreSQL)。有没有将Meteor连接到其他数据库的经验 我想我们必须编写自己的连接器,才能将Meteor的优秀功能与PostgreSQL结合使用 更新: 见下面的答案。由于这个问题仍然受到关注,这里是解决方案的链接 是的,您必须编写自己的连接器。 我也在为mysql寻找这样的东西,但我不认为,有人已经开始在这方面的任何努力。我很想知道,在这方面正在进行的任何努力 看看mysql的类似问题 目前最接近您所要求的是可用的,尽管它目前只支持MyS
是的,您必须编写自己的连接器。 我也在为mysql寻找这样的东西,但我不认为,有人已经开始在这方面的任何努力。我很想知道,在这方面正在进行的任何努力
看看mysql的类似问题 目前最接近您所要求的是可用的,尽管它目前只支持MySQL
也许你会考虑为项目提供支持PrgRESs?
< P>你可以添加对NPM包的支持 然后,您可以安装NPM PG包它对我来说很好不确定你是否还在寻找它,但这可能会有所帮助:如果你像我一样,你喜欢流星,但讨厌蒙戈。在Meteor的Trello Roadmap()中,投票最多的特性是SQL支持,PostgreSQL或MySQL 因为《流星》中没有关于这一点的日期,所以这里我总结了我找到的部分解决方案 1.-仅对客户端查询使用SQL **更新:alasql现在是meteor软件包: 您可以使用安装alaSQL
meteor add agershun:alasql
AlaSQL和Meteor Mongo系列
现在可以使用Meteor集合作为参数。将SQL应用于Meteor集合:
Template.body.helpers({
tasks: function () {
return alasql('SELECT * FROM ?',[Tasks]);
}
});
或者,您可以将find()选项与函数中的特殊METEOR()一起使用:
return alasql('SELECT * FROM ?',[Tasks]);
return alasql('SELECT * FROM METEOR(?)',[Tasks]);
return alasql('SELECT * FROM METEOR(?,?)',[Tasks,{text:"Hello world!"}]);
return alasql('SELECT * FROM METEOR(?,{text:"Hello world!"})',[Tasks]);
让我们面对现实吧,Mongo不喜欢常见的数据操作,因此能够使用SQL查询数据(使用连接、GRUP等)将减轻很多痛苦。有一些软件包允许您在客户机中使用SQL,至少对于querys是这样的:最简单的软件包是一个旧的(2010)实用程序,SqlLike()。镇上的新玩家是alaSQL,它由@Agersun()积极开发。SqlLike的优点是它只有10k。当然,AlaSQL的功能要强大得多,但是对于在联合和聚合中使用SQL取代mongo sintax,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 MySql,PostgreSQL是Meteor pg()。这两种方法都是解决问题的好方法,但都存在一些问题,而且在适应上有些麻烦
Hack反应堆的一个团队已经形成了Meteor Stream,它的第一个产品是PostgreSql与Meteor的集成,Meteor postgres()。它看起来非常好,在客户端使用alaSql来替换minimongo
两种方法都很好,但都存在一些问题:
他们中断了对流星的部署。
他们非常非常年轻,还没有接近生产准备阶段
它们仍然需要对我们所习惯的通常的pub-sub-sintax进行调整,这可能会引起与其他meteor软件包的兼容性问题。
3.-仍然使用Mongo,但作为MySql数据库的简单存储库
此选项维护Meteor的所有特性,并使用Mongo作为MySql或PostgreSql数据库的临时存储库
@perak()的mysql shadow是一个很好的尝试。它做到了它所说的,保持Mongo与MySql的双向同步,让您在MySql中处理数据
坏消息是,开发人员将不会继续维护它,但所做的工作足以处理简单的场景,在这些场景中,您没有更新其他表或类似内容的复杂触发器
要实现功能齐全的同步,可以使用SymmetricDS(),这是一个经过良好测试的数据库复制器。当然,这涉及到设置一个新的java服务器,但这是确保您能够在一个简单的存储库中转换Mongo数据库的最佳方法,该存储库包含真实的MySql、PostgreSQL、SQL server和Informix数据库。我还得自己检查一下
目前,MySQL Shadow似乎是一个足够好的解决方案
这种方法的一个优点是,您仍然可以使用所有标准Meteor功能、包、Meteor部署等。你不需要做任何事情,只需要设置同步机制,你不会破坏任何东西
此外,如果有一天Meteor团队使用SQL集成中筹集的部分资金,你的应用程序更有可能按原样工作。PostgreSQL现在是实验性的。你为什么讨厌Mongodb?因为我讨厌非规范化数据库和Mongo使用的查询语言。你为什么讨厌非规范化数据库和Mongos查询语言?我正试图弄清楚人们在没有sql dbs的情况下的经历,如果能听到你的经历,我将不胜感激。@AgentZebra我觉得自己像维克多。我的主要问题是Mongo不符合ACID。另外,我在SQL数据库方面有15年以上的经验,在NoSQL方面有0年(实际上是0天)的经验。这家伙省去了我详细解释的麻烦。他说: