Docs Menu
Docs Home
/ /

데이터베이스 및 컬렉션

이 가이드 에서는 Ruby 운전자 로 MongoDB 데이터베이스 및 컬렉션을 사용하는 방법을 학습 수 있습니다.

MongoDB는 데이터를 다음 수준의 계층 구조로 구성합니다.

  • 데이터베이스: MongoDB 인스턴스에서 데이터 구성의 최상위 수준입니다.

  • 컬렉션: MongoDB는 문서를 컬렉션에 저장합니다. 관계형 데이터베이스의 테이블과 유사합니다.

  • 문서: string, 숫자, 날짜 및 기타 내장된 문서와 같은 리터럴 데이터를 포함합니다.

문서 필드 유형 및 구조에 대한 자세한 내용은 MongoDB Server 매뉴얼의 문서 가이드를 참조하세요.

원하는 데이터베이스 이름으로 Mongo::Client 인스턴스 생성하여 데이터베이스 액세스합니다.

다음 예제에서는 test_database 데이터베이스에 액세스합니다.

client = Mongo::Client.new(['127.0.0.1:27017'], database: 'test_database')
database = client.database

데이터베이스 인스턴스 에서 [] 메서드를 사용하여 컬렉션 에 액세스합니다.

다음 예시 test_collection이라는 컬렉션 에 액세스합니다.

database = client.database
collection = database['test_collection']

제공된 컬렉션 이름이 데이터베이스에 아직 존재하지 않는 경우, MongoDB는 데이터를 처음 삽입할 때 컬렉션을 암시적으로 생성합니다.

MongoDB 용 Ruby 운전자 직접적인 create_collection 메서드가 없지만 create 메서드를 사용하여 특정 옵션이 있는 컬렉션 만들 수 있습니다.

다음 예시 특정 옵션을 사용하여 example_collection이라는 컬렉션 만듭니다.

database = client.database
database[:example_collection].create(capped: true, size: 1024)

최대 크기, 문서 유효성 검사 규칙 등과 같은 컬렉션 옵션을 create 명령과 함께 command 메서드에 인수로 전달하여 지정할 수 있습니다. 선택적 매개변수의 전체 목록은 생성 명령에 대한 MongoDB 설명서를 참조하세요.

collections 메서드를 호출하여 데이터베이스 의 컬렉션 목록을 쿼리 할 수 있습니다. 이 메서드는 데이터베이스 에 있는 컬렉션 객체의 배열 반환합니다.

다음 예시 collections 메서드를 호출하고 배열 을 반복하여 결과를 출력합니다.

database = client.database
collection_list = database.collections
collection_list.each do |collection|
puts collection.name
end

데이터베이스에서 컬렉션 이름만 쿼리하려면 다음과 같이 collection_names 메서드를 호출합니다.

database = client.database
collection_names = database.collection_names
collection_names.each do |name|
puts name
end

참고

database.collections 객체 목록은 더 자세한 정보를 제공하는 반면(예: 각 컬렉션 객체 에서 메타데이터 추가 쿼리할 수 있음), database.collection_names 는 단순히 컬렉션 이름을 나열합니다.

drop 메서드를 사용하여 데이터베이스에서 컬렉션을 삭제할 수 있습니다.

다음 예시에서는 test_collection 컬렉션을 삭제합니다.

database = client.database
collection = database[:test_collection]
collection.drop

경고

컬렉션을 제거하면 컬렉션의 모든 데이터가 삭제됨

데이터베이스에서 컬렉션을 삭제하면 해당 컬렉션 내의 모든 문서와 모든 인덱스가 영구적으로 삭제됩니다.

컬렉션의 데이터가 더 이상 필요하지 않은 경우에만 컬렉션을 삭제하세요.

읽기 설정( read preference)을 설정하여 드라이버가 읽기 작업을 라우팅하는 방법을 제어할 수 있습니다. 또한 읽기 고려 및 쓰기 고려를 설정하여 드라이버가 복제본 세트에 대한 읽기쓰기 작업의 승인을 기다리는 방법에 대한 옵션을 제어할 수도 있습니다.

기본적으로 데이터베이스는 Mongo::Client 인스턴스에서 이러한 설정을 상속하고 컬렉션은 데이터베이스에서 설정을 상속합니다. 그러나 다음 방법 중 하나를 사용하여 데이터베이스 또는 컬렉션에서 이러한 설정을 변경할 수 있습니다.

  • database.with: 데이터베이스 가져오고 새로운 읽기 설정 (read preference), 읽기 고려 (read concern) 및 쓰기 고려 (write concern) 적용합니다.

  • collection.with: 컬렉션 가져오고 새로운 읽기 설정 (read preference), 읽기 고려 (read concern) 및 쓰기 고려 (write concern) 적용합니다.

앞의 메서드를 사용하여 읽기 또는 쓰기 (write) 설정을 변경하려면 메서드를 호출하고 새 읽기 설정 (read preference), 읽기 고려 (read concern) 또는 쓰기 고려 (write concern) 전달합니다.

다음 예시 database.with 메서드를 사용하여 test-database 데이터베이스 의 읽기 설정 (read preference), 읽기 고려 (read concern) 및 쓰기 (write) 설정을 변경하는 방법을 보여 줍니다.

database_with_settings = client.use('test_database').with(
read: { mode: :secondary },
read_concern: { level: :local },
write: { w: :majority }
)

다음 예시 에서는 컬렉션 의 읽기 설정 (read preference), 읽기 고려 (read concern)) 및 쓰기 고려 (write concern) 변경하는 방법을 보여줍니다.

collection_with_settings = client[:test_collection].with(
read: { mode: :secondary },
read_concern: { level: :local },
write: { w: :majority }
)

읽기 및 쓰기 설정에 대해 자세히 알아보려면 MongoDB Server 매뉴얼에서 다음 가이드를 참조하세요.

MongoDB Server 에서는 선택한 기준에 따라 복제본 세트 멤버에 키-값 태그를 적용 할 수 있습니다. 그런 다음 해당 태그를 사용하여 읽기 작업의 멤버를 한 명 이상 대상으로 지정할 수 있습니다.

기본값 으로 MongoDB Ruby 운전자 읽기 작업을 위해 프라이머리 멤버를 선택합니다. 읽기 설정을 설정하고 선택적으로 태그를 지정하다 세트를 설정하여 이 동작을 수정할 수 있습니다.

다음 코드 예시 에서 :read 매개변수에 전달된 태그 세트 Ruby 운전자 뉴욕 데이터 센터 ('dc':'ny')에서 읽기를 선호하고 샌프란시스코 데이터 센터 ('dc':'sf')로 대체하도록 지시합니다.

client = Mongo::Client.new(['IP_ADDRESS_001:27017'], database: 'test', read: {
mode: :secondary,
tag_sets: [{'dc' => 'ny'}, {'dc' => 'sf'}]
})
database = client.database
collection = database[:example_collection]

복제본 세트에 대해 자세히 학습하려면 MongoDB Server 매뉴얼 복제본 세트 멤버 페이지를 참조하세요.

여러 복제본 세트 멤버가 지정한 읽기 설정 (read preference) 및 태그를 지정하다 세트와 일치하는 경우, Ruby 운전자 핑 시간에 따라 선택된 샤딩된 클러스터의 가장 가까운 복제본 세트 멤버에서 읽습니다.

기본적으로 드라이버는 핑 시간이 가장 가까운 멤버의 15 밀리초 이내인 멤버만 쿼리에 사용합니다. 지연 시간이 더 긴 멤버 간에 읽기를 분산하려면 local_threshold 옵션을 Mongo::Client 생성자에 전달합니다.

다음 예에서는 로컬 임계값을 35 밀리초로 지정합니다.

client = Mongo::Client.new(
['IP_ADDRESS_001:27017'],
database: 'test_database',
read: { mode: :secondary_preferred },
local_threshold: 35
)
database = client.database
collection = database[:example_collection]
result = collection.find({}).first
puts result

앞의 예시 에서 Ruby 운전자 가장 가까운 멤버의 핑 시간 35 밀리초 내에 일치하는 멤버 간에 읽기를 분산합니다.

참고

Ruby 운전자 mongos 인스턴스 를 통해 복제본 세트 와 통신할 때 local_threshold 값을 무시합니다. 이 경우 localThreshold 명령줄 옵션을 사용합니다.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

AWS Lambda

이 페이지의 내용