programing

생성 간의 차이인덱스() 및 확인mongodb를 사용한 Java의 인덱스()

i4 2023. 5. 16. 22:10
반응형

생성 간의 차이인덱스() 및 확인mongodb를 사용한 Java의 인덱스()

사이의 차이점은 무엇입니까?createIndex()그리고.ensureIndex()MongoDB 자바?나는 이것을 구글에 검색했지만 만족스러운 답변을 얻지 못했습니다.

업데이트 2: 원본 답변과 첫 번째 업데이트는 Java API 대신 Mongo 셸 문서를 잘못 참조합니다.

Java에서는 버전 2.12에서 더 이상 사용되지 않고 버전 3.0에서 제거되었습니다. 이 버전을 사용해야 합니다.


db.collection.ensureIndex()버전 3.0.0 이후에는 더 이상 사용되지 않습니다.
이제 db.collection.create의 별칭입니다.색인().

원본:
createIndex()1.8 이후에는 더 이상 사용되지 않습니다.

컬렉션에 인덱스를 만드는 데 사용되었지만ensureIndex()인덱스가 아직 존재하지 않는 경우 지정된 필드에 인덱스를 만듭니다.게다가 우리가 실행할 때createIndex()두 번째 실행은 실패하는 반면에 두 번째 실행은 실패할 것입니다.ensureIndex()여러 번 호출할 수 있으며 실패하지 않습니다.

그리고 그들이 행동과 관련하여 바꾼 것이 하나 더 있습니다.ensureIndex()이전 버전의 mongodb(2.6 미만 버전)에서는 기존 문서에 대한 인덱스 항목이 최대 인덱스 키 길이를 초과하면 인덱스가 생성되지만 Mongodb는 이러한 문서를 인덱싱하지 않는 반면 최근 버전에서는 인덱스가 생성되지 않습니다.

API에서 자바 API는DBCollection.ensureIndex()는 더 이상 사용되지 않으며, "일반적인" MongoDB API(응답 당시) 정확히 반대입니다.업데이트:이러한 불일치는 그 후에 해결된 것으로 보입니다.db.collection.createIndex()는 재대리인으로 대체합니다.db.collection.ensureIndex()몽고 껍질에서도.

https://jira.mongodb.org/browse/JAVA-1097, 의 Java에서 볼 수 있듯이 (OP가 질문한 내용)ensureIndex()Java 드라이버 버전 2.12.0에서는 더 이상 사용되지 않으며, 이 드라이버를 사용해야 합니다.DBCollection.ensureIndex() (버전 2.12에 대한 링크)는 더 이상 DB Collection Java API에서 사용할 수 없습니다.

ensureIndexJava 드라이버(v2.12 이상)에서 발견된 메서드는 인덱스가 컬렉션에 있는지 여부를 캐시합니다.여러 클라이언트가 컬렉션의 인덱스를 변경할 수 있으므로 캐시 값이 잘못될 수 있으며 드라이버가 누락된 인덱스를 만들지 못할 수 있습니다.

이러한 이유로 Java 드라이버는 다음을 구현했습니다.createIndex인덱스 상태를 캐시하지 않는 것을 제외하고 동작이 동일한 메서드입니다.

드라이버 2.12 이상을 사용하면ensureIndex타고createIndex그리고 드라이버가 이전에 인덱스가 이미 존재한다고 생각하고 생성물을 보내지 않고 반환하는 성능 히트를 제외하고 동일한 동작을 기대합니다.mongo 서버에 대한 인덱스 명령입니다.

왜 그들이 이름을 바꾸지 않고 행동을 바꾸지 않았는지에 대해서는 저는 전혀 모릅니다.

버전 > 3.0.0 이후로는 사용되지 않습니다: db.collection.sure인덱스()는 이제 db.collection.create의 별칭입니다.색인().

.0에서 db.collection.ensureIndex() 로대었니다로 대체되었습니다.db.collection.createIndex().

스냅샷:

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/25968592/difference-between-createindex-and-ensureindex-in-java-using-mongodb

반응형