2012-05-29 5 views
19

Meteor를 사용하여 관계형 데이터베이스 (PostgreSQL)에 연결하고 싶습니다. Meteor를 다른 데이터베이스에 연결 한 경험이 있습니까?meteor with postgresql 사용

PostgreSQL과 함께 Meteor의 멋진 기능을 사용하려면 자체 커넥터를 작성해야합니다.

업데이트 : 아래 답변을 참조하십시오. 이 문제는 여전히 솔루션에 대한 링크입니다.

https://github.com/meteor-stream/meteor-postgres

답변

5

네, 당신은 당신의 자신의 커넥터를 작성해야합니다. 나는 또한 mysql과 같은 것을 찾고 있는데, 생각조차하지 않는다. 나는이 방향에 대한 지속적인 노력을 알고 싶습니다.

mysql과 비슷한 질문이 있습니다. Meteor with mysql

+1

누군가가 방금 했어 :) https://github.com/drorm/meteor-sql –

2

현재 사용 가능한 질문과 가장 가까운 것은 Meteor SQL project이지만 현재는 MySQL 만 지원합니다.

아마 당신은 Postgres를 지원하기 위해 프로젝트에 참여하는 것을 고려할 것입니까?

4

당신이 나를 좋아한다면, 당신은 유성을 사랑하지만 몽고를 싫어합니다. Meteor의 Trello 로드맵 (https://trello.com/b/hjBDflxp/meteor-roadmap)에서 가장 많이 투표 된 기능은 PostgreSQL 또는 MySQL 중 하나 인 SQL 지원입니다.

Meteor에 날짜가 없으므로 여기에서 내가 찾은 부분적인 해결책을 요약합니다.

1. 클라이언트 쪽 쿼리에만 SQL을 사용하십시오.

** UPDATE :

당신은 지금 당신은 인수로 유성 컬렉션을 사용할 수 있습니다

meteor add agershun:alasql 

AlaSQL 및 유성 몽고 컬렉션

와 alaSQL를 설치할 수 있습니다 alasql 지금 유성 패키지입니다.

Template.body.helpers({ 
    tasks: function() { 
    return alasql('SELECT * FROM ?',[Tasks]); 
    } 
}); 

아니면() 발견과에서 기능 특별한 유성과 옵션()를 사용할 수 있습니다 : 유성 컬렉션에 SQL을 적용

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]); 

이의 그것을 직면하자, 몽고 때문에, 일반적인 데이터 작업에 짜증 SQL을 사용하여 데이터를 쿼리하는 기능 (JOINS, GRUP BY 등)은 많은 어려움을 안겨줍니다.적어도 querys에는 클라이언트에서 SQL을 사용할 수있는 패키지가 있습니다. 가장 간단한 패키지는 SqlLike (http://www.thomasfrank.se/sqlike.html) 유틸리티입니다. 새로운 플레이어는 alaSQL이며 @agershun (https://github.com/agershun/alasql)이 적극적으로 개발했습니다. SqlLike 장점은 단지 10k가 있다는 것입니다. 물론 AlaSQL은 훨씬 강력하지만, SQL을 사용하여 mongo sintax를 공용체와 집계로 대체하는 경우 SqlLike는 괜찮습니다. 둘 다 당신이 당신의 도우미에이 같은 작업을 수행 할 수 있습니다와

: 직접 SQL 지원

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 .- 실험.

일부 패키지는 Mongo (및 minimongo)를 MySql 또는 PostgreSQL으로 대체하려고합니다. @ numtel의 MySql 패키지는 Meteor-MySql https://github.com/numtel/meteor-mysql이고 PostgreSQL은 Meteor-pg (https://github.com/numtel/meteor-pg)입니다. 둘 다 문제를 해결하기위한 좋은 시도이지만 아직 몇 가지 문제가있어 적응하기가 다소 번거롭다.

Hack Reactor의 팀이 Meteor Stream을 형성했으며, 첫 번째 제품은 Meteor, meteor-postgres (https://github.com/meteor-stream/meteor-postgres)와의 PostgreSQL 통합입니다. 그것은 매우 좋게 보이고 클라이언트에 alaSql을 사용하여 minimongo를 대체합니다.

두 가지 접근법이 좋은,하지만 몇 가지 문제가 있습니다

그들은 유성하는 배포를 끊었다. 그들은 매우 젊고 생산 준비가되어 있지 않습니다. AFAIK 그들은 우리가 익숙한 일반적인 pub-sub sintax에 여전히 비틀림이 필요합니다. 이로 인해 다른 유성기 패키지와의 호환성 문제가 발생할 수 있습니다. 3. 여전히 Mongo를 사용하지만 MySql 데이터베이스의 간단한 저장소로 사용하십시오.

이 옵션은 모든 Meteor의 특성을 유지하고 Mongo를 MySql 또는 PostgreSql 데이터베이스의 임시 저장소로 사용합니다.

멋진 시도는 @perak (https://github.com/perak/mysql-shadow)의 mysql-shadow입니다. 그것이 말하는대로, Mongo는 MySql과 양방향 동기화를 유지하고 MySql에서 데이터를 조작합시다.

나쁜 소식은 개발자가 계속 유지 관리하지 않지만 다른 테이블이나 항목을 업데이트하는 복잡한 트리거가없는 간단한 시나리오에서 작업하기에 충분하다는 것입니다.

완전한 기능을 갖춘 동기화를 위해 매우 잘 테스트 된 데이터베이스 복제기 인 SymmetricsDS (http://www.symmetricds.org)를 사용할 수 있습니다. 여기에는 새로운 Java 서버를 설정하는 작업이 포함되지만 실제 MySql, PostgreSQL, SQL Server, Informix 데이터베이스의 간단한 저장소에서 Mongo 데이터베이스를 변환 할 수 있는지 확인하는 가장 좋은 방법입니다. 아직 직접 확인해야합니다.

현재 MySQL Shadow는 충분한 해결책으로 보입니다.

이 접근법의 한 가지 장점은 여전히 ​​모든 표준 Meteor 기능, 패키지, 유성 배포 등을 사용할 수 있다는 것입니다. 아무것도하지 않아도되지만 동기화 메커니즘을 설정하면 아무 것도 깨지 않습니다.

또한 언젠가 Meteor 팀이 SQL 통합에서 제기 된 달러 중 일부를 사용한다면 앱이 그대로 작동 할 가능성이 더 큽니다.

+0

몽고브를 왜 싫어합니까? –

+0

나는 비정규 화 된 데이터베이스와 쿼리 언어를 싫어하기 때문에 Mongo는 –

+0

을 사용합니다. 왜 비정규 화 된 데이터베이스와 몽고 스 쿼리 언어가 싫은가요? 나는 SQL DB가없는 사람들의 경험에 선명도를 얻기 위해 노력하고 있으며, 당신의 경험을 듣는 것에 정말로 감사 할 것입니다. –