2011-01-04 4 views
2

나는 현재 mongoid로 물을 테스트 중이며 전자 상거래 상점에서 시작되었습니다. 물론 mongoid에는 트랜잭션이 없으므로 인증, 권한 부여, 제품 정보 등 대부분의 응용 프로그램에 mongoid를 이상적으로 사용하고 싶습니다.레일 응용 프로그램에서 rdbms 및 mongodb를 사용하려면 어떻게해야합니까?

그러나 트랜잭션 부족으로 인해 rdbms 로의 복귀가 필요합니다. rdbms는 순수하게 금융 거래를 기록하는 데 사용됩니다.

이것은 레일에서 가능하며 누구나 할 수 있습니까?

레일 전반에 대한 경험이 제한되어 있지만 secure 부분을 엔진으로 탑재하고 url 범위를 secure.myapp.com 또는 myapp.com/secure/으로 지정하면 사용자가 ssl while rack으로 리디렉션됩니다. 공유 세션 같은 것을 처리합니다.

이 방법이 유용할까요? 아니면 누구든지 이것을 구현하는 더 좋은 방법을 찾았습니까?

답변

1

mongoDB와 기존의 RDMS를 섞어도 가능하지만 ORM이 다르므로 ActiveRecord 객체가 MongoDB 객체와 통신하도록하려면 일부 코딩을 추가해야 할 수도 있습니다. MongoDB가 여러 문서에서 트랜잭션을 지원하지 않는다는 사실은 사실이지만 '트랜잭션'원자 적 업데이트를 지원합니다. 즉, 업데이트중인 모든 데이터가 단일 문서 내에 포함되어 있으면 걱정할 필요가 없습니다 거래에 대해. MongoDB는 안전한 업데이트를 지원하기 때문에 데이터가 다른 n 개의 복제 서버에 쓰여지고 디스크에 저장되었는지 확인할 수 있습니다.

HTTPS와 HTTP 간의 공유 세션은 걱정할 필요가 없습니다. 세션 저장소를 MongoDB, MySQL, Memcached 또는 내 권장 사항 인 쿠키로 정의합니다. 도메인을 '.myapp.com'으로 정의하는 경우 쿠키는 프로토콜에 관계없이 애플리케이션의 모든 하위 도메인에서 공유됩니다.

+0

thx, 나는 그들을 섞기 위해 미친 돌진 노력을했다. (git branching에 대한 god에 감사드립니다.) 일들이 작동하는 것처럼 보였을 때, rake 태스크는 엉망이되어 rake db : drop으로 인해 SQL 테이블 만 삭제됩니다. 나는 당신의 조언을 염두에두고 모든 거래 데이터를 하나의 문서로 키핑하는 일을 계속할 것이다. 도우미 – cultofmetatron

+0

도울 수있어서 기쁩니다. 대개 사용자의 요구에 맞는 하나의 데이터베이스 시스템을 찾아서 그걸 고수하는 것이 가장 좋습니다. 프로젝트가 관계형 스키마에 더 잘 들어 맞으면, 모든 수단으로 MySQL을 고수하십시오 :) –

0

첫 번째 포스터의 응답과 마찬가지로 질문의 레일 측면에 직접 언급 할 수는 없지만 MongoDB는 트랜잭션 업데이트를 지원합니다. Mongo 또는 RDBMS에서 전체 시스템을 구현하는 것이 더 간단 할 것입니다.

여기에서 몽고를 사용하는 동기는 무엇입니까? 문서 데이터베이스 모델에서 얻고 자하는 바는 무엇입니까? RoR 오브젝트를 mongo로 직접 리핑하고 싶습니까?

그냥 (추상적으로) 제안하지만 객체를 전면적으로 정의하고 RDBMS에서 해당 정의를 나타낼 수 있습니다. Mongo 사용에 대한 분명한 동기가 없다면 아마도 많은 시간을 절약 할 수있을 것입니다. Mongo는 훌륭한 기술이지만, 데이터를 분류하고 데이터를 분류하는 데 가장 적합합니다. 엄격한 데이터 구조를 표현하는 것이 가장 좋습니다 (문서 데이터베이스를 사용하면 각 요소의 내용에 훨씬 더 융통성이 있습니다. db 내의 개체).

행운을 빈다.

관련 문제