Amazon SimpleDB

April 19th, 2008

레일스에서 Amazon SimpleDB를 어떻게 사용하는 것이 가장 좋을까? 우선 aws-sdb, amazon_sdb, right_aws 등의 gem에서 제공하는 클래스를 모델이 상속해 사용할 수 있다. SimpleDB의 api를 직접 사용할 계획이 아니라면, 이 방법이 가장 명쾌하고 간단한 형태가 될 것이다.

 

새로운 애플리케이션을 만드는 상황이라면 좀더 간단할 뻔 했지만, 만약 기존에 ActiveRecord를 상속해 데이터베이스와 연결되어 있던 모델이라면 이를 SimpleDB형 모델로 변환하는 데 많은 고민이 필요하다. 가령 right_aws gem을 이용한다면, class User < RightAws::ActiveSdb::Base로 시작해야 하며, ActiveRecord가 제공하던 편리한 메서드들은 사용할 수 없게 된다.

 

right_aws의 경우 find_by_#{attrubute_name}, find_all_by_#{attribute_name} 등 ActiveRecord에서 사용하던 메서드 중 몇 가지를 동일하게 사용할 수 있도록 배려하기는 했지만 validation이나 association(has_many, belongs_to)에 대한 지원이 없다. 개발자는 이런 메서드를 직접 작성하거나 vaildation의 경우 controller의 before_filter에서 체크해주고 association의 경우 연관 도메인(테이블)에 대해서 find 호출을 중첩하는 형태로 사용해야 할 것이다.

 

RESTful을 지향하는 ActiveResource와 SimpleDB의 REST API를 연관시켜 사용하려는 시도가 있었는데 aws-sdb와 ActiveResource 사이의 브릿지 역할을 하는 Webrick을 구동시켜주어야 한다는 데 잘 이해가 가지 않는다. 브릿지 서버가 왜 필요하고 왜 하필 Webrick이고 이것이 퍼포먼스에 악영향을 주지는 않을지 의구심이 생긴다. 

 

적용할 애플리케이션에 모델이 아직 많지 않기 때문에(메일러를 제외하면 8개) 간단한 모델부터 하나씩 변환하려고 한다. ActiveRecord와 메서드가 비슷하게 작성되어 있는 right_aws를 사용할 생각이다. 일단 적용해보고 후기를 적어야겠다. 데이터베이스를 놔두고 굳이 데이터스토어를 적용하려는 이유도 나중에 말할 수 있을 것 같다.

1 Response to “Amazon SimpleDB”

  1. FlyingMate Says:
    덧글은 어디에 저장되는 지 궁금.

Leave a Reply

Website

Email