Mongodb : 사용하기 전에 알아야 할 사항은 무엇입니까? [닫은]


93

Ruby on Rails를 사용하여 취미 (비수익) 프로젝트를 시작하고 있습니다. Postgresql을 사용하여 Rails에서 상당한 양의 개발을 수행했으며 정규화 된 스키마를 꽤 잘 모방 할 수 있습니다. 그러나 Mongrodb는 반짝이고 새 것처럼 보입니다. 취미 프로젝트보다 새로운 것을 시도하는 것이 더 낫습니까?

Mongodb를 사용하기 시작한 때를 회상하십시오. 나중에 "내가 시작할 때 알았다면!"이라고 말하게 만든 기술은 무엇입니까? 당신 만이 알고 있었다면 처음부터 바로 사용했을 것이라는 것을 발견 한 플러그인은 무엇입니까? 어떤 참조를 북마크하고 싶습니까?

답변:


63

Rails와 함께 MongoDB를 사용하려는 경우 MongoMapper의 추천을 두 번째로 할 것입니다. 그러나 지금까지 몇 개의 블로그 게시물 외에는 문서가 없다는 것을 경고합니다. 작동 방식을 확인하기 위해 소스 코드를 파헤치는 것이 편하지 않다면 아직은 그렇지 않을 것입니다.

Rails 외부에서 작업하는 경우 MongoMapper에서 멀리 떨어져있는 것이 좋습니다. MongoDB를 SQL 지원 ORM에서 기대하는 것과 유사한 것으로 작동하기 때문에 MongoDB의 힘과 다른 생각에 대한 좋은 아이디어를 제공하지 않습니다. 낮은 수준의 루비 드라이버와 자바 스크립트 콘솔에서도 시간을 보내십시오.

특히 스키마를 정규화하는 방법을 알고 있다고 언급 했으므로 지금은 MongoDB를 데이터베이스로 생각 하지 않는 것이 좋습니다 . MongoDB에서 데이터를 구성하는 방법은 관계형 데이터베이스와 매우 다릅니다. Ruby 해시를 저장하고 검색하는 장소로 생각하십시오. MongoDB로 몇 가지 관계형 작업을 수행 할 수 있지만 NoSQL을 둘러 보는 동안 자체 포함 문서 만 사용하는 것이 좋습니다.

어떤 링크를보아야하는지에 관해서는 MongoDB 사이트에서 할 수있는 모든 것을 읽어 보는 것이 좋습니다. 그들의 문서는 매우 좋습니다. 특히 고급 쿼리 , 다중 키 인덱스MapReduce 를 살펴보면 NoSQL 데이터베이스의 고유 한 장점과 장점에 대한 아이디어를 얻을 수 있습니다.


26

나는 당신과 거의 같은 단계에 있습니다. MongoDB로 새 프로젝트 시작. 저는 약 7 주간의 경험입니다. 이것은 내가 매우 유용하다고 생각한 것입니다.

Mongomapper 대신 Mongoid 사용

http://mongoid.org/

문서는 훌륭합니다. 정말 훌륭합니다. 모든 문서를 읽는 데 약 15 분이 소요되며 Mongoid로 할 수있는 작업과 할 수없는 작업에 대한 정확한 아이디어를 얻을 수 있습니다.

내일 mongoid의 새로운 주요 버전의 출시 후보가 출시 될 예정입니다. 많은 유용한 것들을 가져올 것입니다.

Rails 3을 사용하고 있습니다. 개발 버전을 설치하려면 gem 파일에 다음을 추가하세요.

gem 'mongoid', "~> 2.0.0.beta"

현재 베타는 20이지만 내가 말했듯이 내일 출시 후보가 있습니다.

또한 Google 그룹에 가입하라고 권유합니다. 트래픽이 적고 사람들은 어떤 질문에도 기꺼이 대답합니다. 예를 들어 첫 번째 DB 모델 디자인을 보여 주었고이를 개선 할 수있는 다양한 방법을 제공했습니다. Mongoid의 제작자도 여러분의 질문에 대답합니다.

두 단어로 말하자면 훌륭한 커뮤니티입니다.

Mongo에서 Machinist를 사용할 수있게 해주는이 플러그인이 있습니다.

https://github.com/nmerouze/machinist_mongo

꽤 잘 작동합니다.

gem 'machinist_mongo', :require => 'machinist/mongoid', 
:git => 'http://github.com/nmerouze/machinist_mongo.git',
:branch => 'machinist2'

Machinist와 함께 Forgery를 사용할 수 있습니다. 멋진 믹스.

https://github.com/sevenwire/forgery

내가 말하고 싶은 또 다른 것. 저는 관계 데이터베이스 세계에서 왔기 때문에 처음에는 정말 이상하게 들렸습니다. 몽고 데이터베이스에 파일을 저장할 수 있습니다.

사실, 우리가 예전처럼 관리하는 것보다 더 빠를 수 있습니다. 이는 mongo의 샤딩 지원 때문입니다. 샤딩은 Mongo 데이터베이스를 제공하기 위해 컴퓨터 클러스터를 사용할 수 있음을 의미합니다. 원활합니다. 주인 노예. 따라서 여러 컴퓨터에서 각각 일부를 보내는 파일을 제공 할 수 있습니다. 그것은 아주 잘 확장됩니다 :)

이것은 GridFS를 사용하여 수행됩니다. http://www.mongodb.org/display/DOCS/GridFS

Mongoid는 해당 마스터-슬레이브 구성을 지원합니다.

더 많은 정보가 필요한지 물어보세요.

편집하다:

또한 : http://railscasts.com/episodes/238-mongoid


8

1. 대소 문자를 구분하지 않는 쿼리

eq

"_id": "1da259c70fe3392c3b000002",
"name": "Dany"

array('name' => 'dany') :: results 0
array('name' => 'Dany') :: results 1

2. 마지막 삽입 ID :

$coll->insert($user, true);
echo (string) $user['_id'];

3. _id는 MongoId 객체입니다.

ID로 찾기 :

$p->findOne(array('_id' => new MongoId( $UID  )), array('proj'));

_id 표시 :

$coll['_id'] = ( string ) $coll['_id'];

또한 _id는 컬렉션마다 고유하며 다른 서버에서는 다를 수 있습니다.

4. MongoDB는 LIMIT, OFFSET, ORDER를 지원합니다.

고급 정렬을 위해 Aggregation Framework를 사용할 수 있습니다.

5. SQL에서 MongoDB의 Sql 주입은 Array 주입입니다.

따라서 데이터를 쓸 때 (string) 또는 is_array 확인

$req = (string) $range['name'];

6. HDD DOS

기본 _POST 크기는 PHP에서 8MB, IN Mongo는 문서 당 16MB로 제한됩니다. 따라서 일부 사용자가 분석 스크립트에서 eq USER_AGENT STRING을 스푸핑 한 다음 단일 삽입 당 16MB를 보냅니다.

7. 과거에 MongoDb에 몇 가지 문제가 있었지만 지금은 3.0이 꽤 훌륭하고 안정적입니다.


3

다음은 .NET Rocks의 MongoDb 팟 캐스트에 대한 훌륭한 초보자 / 소개입니다.

http://www.dotnetrocks.com/default.aspx?ShowNum=507

Mike Dirolf는 intereviewed ... 그는 MongoDb 프로젝트에서 일하고 있습니다. 아, 그리고 음질이 우수합니다.

Mike Dirolf는 10gen의 소프트웨어 엔지니어로 MongoDB 프로젝트에서 일하고 있습니다. 그는 주로 Python 및 Ruby 용 클라이언트 드라이버 작업을하지만 시간을내어 MongoDB에 대해 이야기합니다. EuroPython, Strange Loop Conf, RubyEnRails, RuPy 및 RubyConf뿐만 아니라 뉴욕, 런던, 워싱턴의 밋업 그룹에서 발표했습니다. DC와 샌프란시스코.


2

확실히 junemakers mongo-mapper를 살펴 봐야합니다 : http://github.com/jnunemaker/mongomapper 하지만 -mapper가 내부에서 어떻게 작동하는지보기 위해 순수한 Ruby Mongo 드라이버로 약간 플레이하는 것이 좋습니다. Ruby를 사용하여 Mongo 데이터베이스에 일부 데이터를 넣는 것은 그리 어렵지 않습니다.

이미 Ruby Mongo Tutorial을 찾은 것 같습니다. 그렇지 않은 경우를 대비하여 다음 링크가 있습니다. http://www.mongodb.org/display/DOCS/Ruby+Tutorial


믿거 나 말거나, 그것은 내가 읽기 위해 대기열에 넣은 링크에 없었으며 좋은 것 같습니다. 감사.
Wayne Conrad
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.