Ruby on Rails는 데이터베이스 기반 애플리케이션이 즉각적인 일관성을 보장해야하고 둘 이상의 데이터베이스 스키마를 사용해야하는 경우 필요할 수도있는 2 단계 커밋을 기본적으로 지원하지 않습니다.
많은 웹 응용 프로그램에서 일반적인 유스 케이스는 아닙니다. 둘 이상의 데이터베이스를 사용하여 최종 일관성을 완벽하게 지원할 수 있습니다. 또는 하나의 데이터베이스 스키마로 즉각적인 일관성을 지원할 수도 있습니다. 전자의 경우는 응용 프로그램이 많은 양의 트랜잭션을 지원해야하는 경우 큰 문제입니다 (기술 용어 참고). 후자의 경우가 더 일반적이며, 레일스는 정상적으로 처리됩니다.
솔직히 말해서 실제 확장 성 문제가 발생할 때까지는 Ruby on Rails (또는 모든 프레임 워크) 사용에 대한 제한은 없습니다. 킬러 앱 을 먼저 작성하고, 그런 다음 확장성에 대해 걱정하십시오.
CLARIFICATION : 아키텍처에 근본적인 변화가 필요할 수 있기 때문에 Rails가 어려움을 겪을 것이라고 생각합니다. 나는 관대하고 외래 키 시행이나 SOAP 서비스와 같은 보석/플러그인 생태계의 일부인 몇 가지를 포함 할 것이다.
2 단계 커밋은 하나의 트랜잭션 컨텍스트 내에서 물리적으로 별개의 서버에 대해 두 가지 커밋을 시도하는 것을 의미합니다.
2 단계 커밋의 경우 # 1을 사용하십시오. 데이터베이스가 두 개 이상 있고 두 서버에 스키마가 분산되도록 데이터베이스를 클러스터했습니다. ActiveRecord가 다른 서버를 가로 지르는 "외부 키 맵"을 수행하도록 허용하기 때문에 두 서버 모두에 커밋 할 수 있습니다.
2 단계 커밋의 경우 # 2를 사용하십시오. 메시징 솔루션을 구현하려고합니다 (미안하지만, 저는 하루에 J2EE 개발자입니다). 메시지 생성자는 메시징 중개자 (한 서버)와 데이터베이스 (다른 서버)에 커밋합니다.
나에게 주관적인 소리. –