μλ‘μ΄ κΈ°λ₯
μ΄ νμ΄μ§μ λ΄μ©
λ€μ λ²μ μ μλ‘μ΄ κΈ°λ₯μ λν΄ μμ보μΈμ:
μμ λ νΈνμ±μ΄ μμλλ λ³κ²½
MongoCollectionμ MapReduceIterable λ° λ§΅ 리λμ€ λ©μλλ MongoDB v. μ΄μμμ λ μ΄μ μ¬μ©λμ§4 2 μμ΅λλ€. μ΄λ€μ μ§κ³ νλ μμν¬ λ‘ λ체λλ©° ν₯ν μΆμνλ€ μμ μ κ±°λ μμ μ λλ€.
4.7.1μ μλ‘μ΄ κΈ°λ₯
4.7.1 μ΄μ μ λ ν΄λΌμ΄μΈνΈ μΈ‘ νλ λ 벨 μνΈν λ° Queryable Encryption μ μν₯μ λ―ΈμΉλ λ²κ·Έλ₯Ό ν¨μΉν©λλ€. μ΄ λ²κ·Έλ‘ μΈν΄ GCP KMS λλ μμ νΈμ€ν
λλ κ³ κ° λ§μ€ν° ν€ μνΈνλ¨ λ°μ΄ν° μνΈν ν€ (DEK)λ₯Ό μνμν¬ λ λ°μ΄ν°κ° μμλ μ Azure Key Vault μμ΅λλ€. μ΄ λ²κ·Έλ RewrapManyDataKey
λ©μλμ μ΄μ μ λ²μ 4.7.0 μ μ‘΄μ¬νμΌλ©° DEK μμ€μ μμΈμ΄ λμμ΅λλ€.
μ€μ
ν€ λ³ΌνΈ μ»¬λ μ λ°±μ
DEKλ₯Ό μνμν€κΈ° μ μ νμ ν€ λ³ΌνΈ μ»¬λ μ μ λ°±μ ν©λλ€. DEKλ₯Ό λΆμ€νλ©΄ ν΄λΉ ν€λ‘ μνΈνλ λͺ¨λ λ°μ΄ν°μ μ‘μΈμ€ν μ μκ² λ©λλ€.
4.7μ μλ‘μ΄ κΈ°λ₯
κ²½κ³
v5.0μ νΈνμ±μ΄ μμλλ λ³κ²½
v4.7 μ΄μ μ μ νΈνμ±μ΄ μμλλ λ³κ²½μ΄ ν¬ν¨λμ΄ μμ΅λλ€. μμΈν λ΄μ©μ λ²μ 4.7 λ¨μ μ λ³κ²½ μ¬ν μ μ°Έμ‘°νμΈμ.
4.7 λλΌμ΄λ² 릴리μ€μ μλ‘μ΄ κΈ°λ₯μ λ€μκ³Ό κ°μ΅λλ€.
MongoDB 6.0μ λν μμ ν μ§μμ΄ μΆκ°λμμ΅λλ€.
λ€μκ³Ό κ°μ λ³κ²½ μ€νΈλ¦Ό μ§μ κ°μ μ¬νμ΄ μΆκ°λμμ΅λλ€.
λ³κ²½ μ€νΈλ¦Ό μ λν μ¬μ μ΄λ―Έμ§ λ° μ¬ν μ΄λ―Έμ§ μ§μ μ΄ ν₯μλμμ΅λλ€. λ³κ²½ μ€νΈλ¦Ό κ°μ ν¬νΌλ μ΄μ
fullDocument
μ΅μ μ λν΄whenAvailable
λ°required
μ νμ©ν©λλ€. μμΈν λ΄μ©μ λ³κ²½ μ€νΈλ¦Ό μ°Έμ‘° λ¬Έμλ₯Ό μ°Έμ‘°νμΈμ.whenAvailable
λ°required
μ νμ©νλ μλ‘μ΄fullDocumentBeforeChange
μ΅μ μ μΆκ°νμ΅λλ€.μ΄μ MongoDB 컬λ μ μ νμλλλ‘ κ΅¬μ±νλ©΄ λ³κ²½ μ΄λ²€νΈμ
fullDocumentBeforeChange
νλκ° ν¬ν¨λ©λλ€.λ³κ²½ μ€νΈλ¦Όμ λν
showExpandedEvents
μ§μμ΄ μΆκ°λμμ΅λλ€.wallTime
ν΄λμ€μChangeStreamDocument
μ§μμ μΆκ°νμ΅λλ€.
ν΄λ¬μ€ν°ν μΈλ±μ€ μμ± μ§μμ΄ μΆκ°λμμ΅λλ€.
μλ μνΈν μ§μ μ ν¬ν¨νμ¬ Queryable Encryption κ³Ό κ΄λ ¨λ μλ‘μ΄ κΈ°λ₯μ μ§μν©λλ€( MongoDB v6.0 μν°νλΌμ΄μ¦ μ΄μ νμ) λ° μλ μνΈν.
μλ‘μ΄ Queryable Encryption 곡μ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ§μνμ¬
mongocryptd
νλ‘μΈμ€ κ° νμνμ§ μμ΅λλ€. Queryable Encryption 곡μ λΌμ΄λΈλ¬λ¦¬μλ org.mongodb:mongodb-crypt κ°1.5.1.1
νμν©λλ€. λ²μ μ΄μ.
μνΈν ν€ κ΄λ¦¬λ₯Ό μν μλ‘μ΄ APIκ° μΆκ°λμμ΅λλ€.
$search
/$searchMeta
( Atlas λ§ ν΄λΉ),$densify
λ°$fill
λ₯Ό ν¬ν¨ν μΆκ° μ§κ³ λ¨κ³μ λν λΉλ API λ©μλκ° μΆκ°λμμ΅λλ€. μ 그리κ²μ΄μ λΉλ νμ΄μ§μμ μ΄λ¬ν λ©μλμ μμΈν 보기 .POJO μΈμ½λ© λ° λμ½λ©μ μ¬μ©ν μ μλ
BsonExtraElements
μ£Όμμ μΆκ°νμ΅λλ€.BsonExtraElements
λ₯Ό μ¬μ©νλ©΄ κ°λ°μκ° μ νλλ₯Ό λͺ μμ μΌλ‘ 맀νν νμ μμ΄ ν₯ν μ νλλ₯Ό μμ ν μ μλ κ°μ²΄λ₯Ό λμ½λ©ν μ μμ΅λλ€.λ€μμ ν¬ν¨ν μ±λ₯ μ΅μ ν:
μλ² μΈμ ν λ° λ²νΌ νμ μ κΈ μμ΄ κ΅¬νν©λλ€.
DBCursor
μ μλ‘μ΄ μ 리 ꡬνμ λ§λ¬΄λ¦¬ λμ Java Cleaner APIλ₯Ό μ¬μ©νλ©°, Java 9 μ΄μμμ μ¬μ©ν μ μμ΅λλ€.
setWindowFields λΉλ APIλ λ μ΄μ λ² ν κΈ°λ₯μ΄ μλλλ€. APIμ λ³κ²½μΌλ‘ μΈν΄ λ°μ΄λ리 λ° μμ€ νΈνμ±μ΄ λͺ¨λ μ€λ¨λ©λλ€. μμΈν λ΄μ©μ λ²μ 4.7 νΈνμ±μ΄ μμλλ λ³κ²½μ μ°Έμ‘°νμΈμ.
4.6μ μλ‘μ΄ κΈ°λ₯
4.2 Node.js λλΌμ΄λ² 릴리μ€μ μλ‘μ΄ κΈ°λ₯μλ λ€μ λ΄μ©μ΄ ν¬ν¨λ©λλ€.
μ΄μ λ²νΌ νμ΄ λͺ¨λ
MongoClient
μΈμ€ν΄μ€μμ 곡μ λ©λλ€. λ²νΌ νμ 1λΆ λμ μ ν΄ μνμλ λ²νΌλ₯Ό μ 리ν©λλ€.ν΄λΌμ΄μΈνΈ μΈ‘ νλ API λ 벨 μνΈν ( )μ λν μ격 μ¦λͺ μ 곡κΈμλ₯Ό μ§μ νλ Amazon Web Services KMS CSFLE κ° μΆκ°λμμ΅λλ€. μμΈν λ΄μ©μ AutoEncryptionSettings.Builder.kmsProviderPropertySuppliers() λ° ClientEncryptionSettings.Builder.kmsProviderPropertySuppliers() μμΈν λ΄μ©μ API λ¬Έμλ₯Ό μ°Έμ‘°νμΈμ.
Apple M1 ARM κΈ°λ° νλμ¨μ΄μ λν CSFLEμ μ’ μμ±μΈ
org.mongodb:mongodb-crypt
νΈνμ±μ΄ μΆκ°λμμ΅λλ€.λλΌμ΄λ²κ° μ¬μ©μ μ§μ DNS ν΄λΌμ΄μΈνΈλ₯Ό μ§μ ν μ μλλ‘ μλΉμ€ μ 곡μ μΈν°νμ΄μ€(SPI)λ₯Ό μΆκ°νμ΅λλ€. DnsClient 보기 λ° DnsClientProvider μμΈν λ΄μ©μ μΈν°νμ΄μ€ API λ¬Έμλ₯Ό μ°Έμ‘°νμΈμ.
Java λ μ½λ κ° μΈμ½λ© λ° λμ½λ©μ μν μ΄μ μ μ§μ μΆκ° λ° BSON λ¬Έμλ‘, κΈ°λ³Έκ° νμ±νλμ΄ μμ΅λλ€. μμΈν λ΄μ©μ λ¬Έμ λ°μ΄ν° νμ: λ μ½λ λ₯Ό μ°Έμ‘°νμΈμ.
4.5.1μ μλ‘μ΄ κΈ°λ₯
DNS μλ²κ° μ‘΄μ¬νμ§ μλ λλ©μΈμ λνλ΄λ NXDomain μ€λ₯λ₯Ό λ°ννλ κ²½μ° 4.5.1 λλΌμ΄λ²λ λ μ΄μ μμΈλ₯Ό λ°μμν€μ§ μμ΅λλ€.
4.5μ μλ‘μ΄ κΈ°λ₯
4.5 Java λλΌμ΄λ² 릴리μ€μ μλ‘μ΄ κΈ°λ₯μ λ€μκ³Ό κ°μ΅λλ€.
SRV 리μμ€ λ μ½λμ μ¬μ©μ μ§μ μλΉμ€ μ΄λ¦ μ§μ μ λν μ§μμ΄ μΆκ°λμμ΅λλ€. μμΈν λ΄μ©μ μ°κ²° μ΅μ κ°μ΄λμ
srvServiceName
μ€μ μ μ°Έμ‘°νμΈμ.CodecRegistries.withUuidRepresentation()
λ©μλλ₯Ό μ¬μ©νμ¬ μ½λ± λ μ§μ€νΈλ¦¬μμ UUID ννμ μ¬μ©μ μ§μ ν μ μλλ‘ μ§μμ΄ μΆκ°λμμ΅λλ€.ClusterSettings
,ServerSettings
λ°ConnectionPoolSettings
λΉλμμ 리μ€λ μ€μ μ¬μ μ μ§μμ΄ μΆκ°λμμ΅λλ€.ClusterListener
,ServerListener
λ°ServerMonitorListener
μμ μμ ν λͺ¨λ μ΄λ²€νΈλ μ΄μ μλ‘ λ€λ₯Έ MongoClient μΈμ€ν΄μ€μμ 리μ€λλ₯Ό 곡μ νμ§ μμ λ λ°μ μ κ΄κ³λ₯Ό μ¬μ©νμ¬ μμ ν μ λ ¬λ©λλ€. λ°μ μ μ λ ¬μ λν΄ μμΈν μμλ³΄λ €λ©΄ Java μΈμ΄ μ¬μμ λ°μ μ μ λ ¬μ μ°Έμ‘°νμΈμ.EnumCodec
λ°EnumCodecProvider
ν΄λμ€λ₯Ό μΆκ°νμ¬enum
μ νμ λν μ½λ± μ§μμPojoCodec
ν΄λμ€μ λΆλ¦¬νμ΅λλ€.MongoClientSettings
λ°Bson
μΈν°νμ΄μ€μμ μ‘μΈμ€ν μ μλ κΈ°λ³Έ μ½λ± λ μ§μ€νΈλ¦¬μ μ΄μ enum
μ½λ± ν΄λμ€κ° ν¬ν¨λ©λλ€. μ ν리μΌμ΄μ μμ μ¬μ©μ μ§μ μ΄κ±°ν μ½λ±κ³Ό κΈ°λ³Έ λ μ§μ€νΈλ¦¬ μ€ νλλ₯Ό μ¬μ©νλ κ²½μ° μ½λ± μ¬μ μ μΉμ μ μ€λͺ λ λλ‘ μμλ₯Ό μ§μ ν΄μΌ ν©λλ€.μ΄μ μ μ 4.4 λ° 4.3 λ²μ μ μν₯μ λ―ΈμΉλ μ±λ₯ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€. μ΄ λ²μ μ μ±λ₯μ 4.2 μ μ±λ₯κ³Ό μ μ¬ν΄μΌ ν©λλ€.
ν΄λ¬μ€ν° μ€λͺ μ μ‘°νν λ λ°μν μ€λ₯κ°
onError
ꡬλ μ μ½λ°±μΌλ‘ μ λ¬λμ§ μλ λ¬Έμ κ° ν΄κ²°λμμ΅λλ€.μμΆμ΄ νμ±νλ μνλ‘ μ°κ²°ν λ
ByteBuf
μΈμ€ν΄μ€λ₯Ό 릴리μ€νλ λ¬Έμ κ° ν΄κ²°λμμ΅λλ€.javax.annotation.*
ν¨ν€μ§μ λν λΆνμν μ’ μμ±μorg.mongodb.driver-core
OSGi λ²λ€μμ μ κ±°νμ΅λλ€.
4.4μ μλ‘μ΄ κΈ°λ₯
4.4 Java λλΌμ΄λ² 릴리μ€μ μλ‘μ΄ κΈ°λ₯μ λ€μκ³Ό κ°μ΅λλ€.
MongoDB 5.1κ³Όμ νΈνμ± λ° Java 17 μ§μμ΄ μΆκ°λμμ΅λλ€.
λ€μμ μΈλ±μ€ ννΈμ λν μ§μμ΄ μΆκ°λμμ΅λλ€.
AggregateIterable
μΈμ»¨λ리μ
$merge
λ°$out
μ§κ³ λ¨κ³μ λν μ§μμ΄ μΆκ°λμμ΅λλ€.Updates
λΉλμμmergeObjects()
λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.DocumentCodec
Iterable
λλMap
μΈμ€ν΄μ€μ μΈ λ μ½λ± λ μ§μ€νΈλ¦¬λ₯Ό 무μνμ§ μμ΅λλ€.
4.3μ μλ‘μ΄ κΈ°λ₯
4.3 Java λλΌμ΄λ² 릴리μ€μ μλ‘μ΄ κΈ°λ₯μ λ€μκ³Ό κ°μ΅λλ€.
MongoDB Stable APIμ λν μ§μμ΄ μΆκ°λμμ΅λλ€. μμΈν λ΄μ©μ Stable API κ°μ΄λλ₯Ό μ°Έμ‘°νμΈμ.
μ°Έκ³
2022λ 2μλΆν° λ²μ μ΄ μ§μ λ APIλ Stable APIλ‘ νμλ©λλ€. μ΄λ¦μ λ³κ²½λλ λͺ¨λ κ°λ κ³Ό κΈ°λ₯μ λμΌνκ² μ μ§λ©λλ€.
MongoDB Atlas μλ²λ¦¬μ€ μΈμ€ν΄μ€ μ λν μ°κ²° μ§μ μ΄ μΆκ°λμμ΅λλ€. μ€μ μ λν μμΈν λ΄μ© μ μ μλ²λ¦¬μ€ μΈμ€ν΄μ€ μμ±λ°©λ²μ λν μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
μ°½ μ°μ°μλ₯Ό μ¬μ©ν μ μλλ‘
setWindowFields
νμ΄νλΌμΈ λ¨κ³μ λν λΉλ APIκ° μΆκ°λμμ΅λλ€.Netty io.netty.handler.ssl.SslContext μ€μ μ λν μ§μμ΄ μΆκ°λμμ΅λλ€.
λ€μμ λν μ€λ μ· μ½κΈ° μ§μμ΄ μΆκ°λμμ΅λλ€.
ClientSession
μ°κ²° νλΉ μ μ°κ²° μ€μ μλκ° μ νλ©λλ€.
μ½μ νκ±°λ λ°κΎΈλ λ¬Έμμ νλ μ΄λ¦μ νμ©λλ λ¬Έμμ λν λλΆλΆμ μ ν μ¬νμ΄ μ κ±°λμμ΅λλ€. μ΄λ μ΄λ¬ν μ ν μ¬νμ ν΄λΌμ΄μΈνΈ μ¬μ΄λ μνμ μμ‘΄νλ λͺ¨λ μ ν리μΌμ΄μ μ λμ λ³κ²½μ λλ€.
λ€μ νλ λ¬Έμ νλλͺ μ νμ©λλ λ¬Έμμ λν μ ν μνλ₯Ό 보μ¬μ€λλ€.
μΊλ¦ν° | μμ
| μ€λͺ
|
---|---|---|
. | μ½μ λ° κ΅μ²΄ | μ΄ λ¬Έμλ₯Ό ν¬ν¨νλ νλ μ΄λ¦μ λν μ νμ΄ μ κ±°λμμ΅λλ€. |
$ | Insert | μ΄ λ¬Έμλ‘ μμνλ νλ μ΄λ¦μ λν μ νμ΄ μ κ±°λμμ΅λλ€. |
$ | λ°κΎΈκΈ° | μ€μ²© λ¬Έμμμ μ΄ λ¬Έμλ₯Ό ν¬ν¨νλ νλ μ΄λ¦μ λν μ νμ΄ μ κ±°λμμ΅λλ€. |
$ | λ°κΎΈκΈ° | μ΄ λ¬Έμλ‘ μμνλ νλ μ΄λ¦μ λν μ΅μμ λ¬Έμμ μ νμ μ μ§νμ΅λλ€. μ΄λ κ² νλ©΄ μ λ°μ΄νΈ μμ μ μ¬μ©νλ €κ³ ν λ μ€μλ‘ λ³κ²½ μμ μ μ¬μ©νλ κ²μ λ°©μ§ν μ μμ΅λλ€. |
μ°Έκ³
λ¬λ¬ μ λμ¬ λλ μ μΌλ‘ ꡬλΆλ ν€λ₯Ό μ¬μ©νλ μΉμΈλμ§ μμ μ°κΈ°λ νλ μ΄λ¦μ λν μΌλΆ μ νμ΄ μ¬μ ν μ μ©λλ 5.0 μ΄μ μλ²μμ μλμΌλ‘ κ±°λΆλ μ μμ΅λλ€.
4.2μ μλ‘μ΄ κΈ°λ₯
κ²½κ³
v4.2μ νΈνμ±μ΄ μμλλ λ³κ²½
v4.2 λλΌμ΄λ²μλ νΈνμ±μ΄ μμλλ λ³κ²½μ΄ ν¬ν¨λμ΄ μμ΅λλ€. μμΈν λ΄μ©μ λ²μ 4.2 νΈνμ±μ΄ μμλλ λ³κ²½μ μ°Έμ‘°νμΈμ.
4.2 Java λλΌμ΄λ² 릴리μ€μ μλ‘μ΄ κΈ°λ₯μ λ€μκ³Ό κ°μ΅λλ€.
ν΄λΌμ΄μΈνΈ μ¬μ΄λ νλ λ 벨 μνΈνμ Azure λ° GCP ν€ μ μ₯μκ° μΆκ°λμμ΅λλ€.
μ¬λ¬ μΈμ¦ μμ²μμ μ¬μ¬μ©ν μ μλλ‘ Kerberos μΊμ± ν°μΌμ΄ μΆκ°λμμ΅λλ€.
MongoClient μΆκ°
MongoClientSettings
λλConnectionString
λ₯Ό ꡬμ±μΌλ‘ μ¬μ©νλ μΈμ€ν΄μ€explain()
μ°ΎκΈ° μμ λ©μλ μ¬μ© λ° μ§κ³ λͺ λ Ήμ€κ° 맡 ννμ νΌνμ¬ JSONμΌλ‘ μΈμ½λ© λ° λμ½λ©μ λ³΄λ€ ν¨μ¨μ μΌλ‘ μνν μ μλλ‘ JsonObject ν΄λμ€κ° μΆκ°λμμ΅λλ€.
BsonRepresentation μΆκ°
ObjectId
String
POJO μμ BSON κ°μ λ‘ ννν μ μλ μ£Όμ ν΄λμ€Filters.empty() λ₯Ό μΆκ°νμ΅λλ€. λ©μλ
4.1μ μλ‘μ΄ κΈ°λ₯
4.1 Java λλΌμ΄λ² 릴리μ€μ μλ‘μ΄ κΈ°λ₯μ λ€μκ³Ό κ°μ΅λλ€.
κ³νλ μ μ§ κ΄λ¦¬ μ΄λ²€νΈ μ€μ ν΄λΌμ΄μΈνΈκ° μΈμνλ νμΌμ€λ² μκ°μ΄ ν¬κ² κ°μν©λλ€.
update() λ° delete() λ©μλκ° μ΄μ μΈλ±μ€ ννΈλ₯Ό μ§μν©λλ€.
find()
λ©μλλ RAMμμ μ€ννλ λ° λ무 λ§μ λ©λͺ¨λ¦¬κ° νμν μ λ ¬μ λν΄ allowDiskUse()λ₯Ό μ§μν©λλ€.AWS(Amazon Web Services) IAM(Identity and Access Management) μ격 μ¦λͺ μ μ¬μ©νλ MONGODB-AWS μΈμ¦ λ©μ»€λμ¦μ λν μ§μμ΄ μΆκ°λμμ΅λλ€.
μΈμ¦μ μν μλ² μ볡 νμκ° μ€μ΄λ€μ΄ μ°κ²° μ€μ μλκ° λΉ¨λΌμ§λλ€.
4.0μ μλ‘μ΄ κΈ°λ₯
κ²½κ³
v4.0μ νΈνμ±μ΄ μμλλ λ³κ²½
v4.0 λλΌμ΄λ²μλ νΈνμ±μ΄ μμλλ λ³κ²½μ΄ ν¬ν¨λμ΄ μμ΅λλ€. μμΈν λ΄μ©μ λ²μ 4.0 νΈνμ±μ΄ μμλλ λ³κ²½μ μ°Έμ‘°νμΈμ.
μ΄λ² 릴리μ€μλ μλ‘μ΄ κΈ°λ₯μ΄ μΆκ°λμ§ μμμ΅λλ€.