[CouchDB] ์†Œ๊ฐœ

[์›๋ณธ ๋งํฌ]

CouchDB๋Š” 2005๋…„์— ๋งŒ๋“ค์–ด์ง„ ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ DB๋ฅผ ์œ„ํ•œ ์‹œ์Šคํ…œ์ด๋‹ค.
Erlang์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๊ณ , Apache์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋ฉฐ, Document ๊ธฐ๋ฐ˜์˜ NoSQL์ด๋‹ค.




ํŠน์ง•


https://www.javatpoint.com/couchdb-tutorial
MongoDB์™€ ๋น„์Šทํ•˜๊ฒŒ JSON Document๋ฅผ ์ €์žฅ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  multi master ๊ธฐ๋ฐ˜์˜ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋†’์€ ๊ฐ€์šฉ์„ฑ๊ณผ ๊ฐ•๋ ฅํ•œ ์ตœ์ข… ์ผ๊ด€์„ฑ ๋ณด์žฅ์„ ์ฃผ์š” ์žฅ์ ์œผ๋กœ ๋‚ด์„ธ์šด๋‹ค.

NoSQL์œผ๋กœ์„œ๋Š” ๋…ํŠนํ•˜๊ฒŒ LSM Tree๊ฐ€ ์•„๋‹Œ B-Tree๋ฅผ ๊ธฐ๋ณธ ์ธ๋ฑ์Šค ๋งค์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

query ๋ฐฉ์‹์€ map-reduce ๋ฐฉ์‹์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

ํŠน์ดํ•˜๊ฒŒ DB๋กœ์„œ ์ž์ฒด ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  HTTP/REST ํ†ต์‹ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์กฐ๊ธˆ ๋А๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค.





vs MongoDB

Document DB๋ผ๋Š” ๊ณตํ†ต์  ๋•Œ๋ฌธ์— MongoDB์™€ ๊ณง์ž˜ ๋น„๊ต๋˜๊ณค ํ•˜๋Š”๋ฐ, ์ฐจ์ด์ ์ด ๊ฝค ๋งŽ์€ ํŽธ์ด๋‹ค.

1. ๋ณต์ œ
MongoDB๋Š” single master - multi slave ๊ตฌ์กฐ๋กœ ๋ณต์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ˜๋ฉด, Couch๋Š” multi master๋กœ ๋ณต์ œ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ ํƒ“์— ๊ฐ€์šฉ์„ฑ ์ธก๋ฉด์—์„œ๋Š” Couch๊ฐ€ ๋” ์œ ๋ฆฌํ•˜๋‹ค.

2. ๋™์‹œ ์ œ์–ด
Couch๋Š” ํƒ€์ž„์Šคํƒฌํ”„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์‹œ ์ œ์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‚™๊ด€์ ์ธ Lock ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ write๊ฐ€ read๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š๋Š”๋‹ค.
๋งŒ์•ฝ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ช…๋ น์ด ๋™์‹œ์— ๋“ค์–ด์™€์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ๊ฒƒ์„ ์œ ์ง€ํ•˜๊ณ  ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ๊ฒƒ์„ ๋ฒ„๋ฆฌ๋Š” ๋ฐฉ์‹์„ ์ทจํ•œ๋‹ค. ๊ทธ๋ž˜์„œ Application ์ˆ˜์ค€์—์„œ ์ถฉ๋Œ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ๋” ๋ณต์žกํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

3. ํŠธ๋žœ์žญ์…˜
MongoDB๋Š” ๋ถˆ์™„์ „ํ•˜๊ฒŒ๋‚˜๋งˆ ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋‚˜, Couch๋Š” ๊ทธ๋Ÿฐ๊ฒŒ ๋”ฑํžˆ ์—†๋‹ค.

4. ์„ฑ๋Šฅ
์ผ๋ฐ˜์ ์ธ ์ฝ๊ธฐ ์„ฑ๋Šฅ์ด๋‚˜ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋Šฅ๋ ฅ์€ MongoDB๊ฐ€ Couch๋ณด๋‹ค๋Š” ๋‚˜์€ ํŽธ์ด๋‹ค.

5. ์ธ๋ฑ์Šค
MongoDB๋Š” RDB ์ˆ˜์ค€์˜ ๋‹ค์–‘ํ•œ ์ธ๋ฑ์Šค ๊ธฐ๋Šฅ์ด ์ง€์›๋˜๋‚˜, Couch๋Š” ์ž˜ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค.

6. query
MongoDB๋Š” ์ž์ฒด์ ์ธ json ํ˜•์‹์˜ query๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋‚˜, couch๋Š” HTTP Request๋ฅผ ํ†ตํ•ด query๋ฅผ ๋‚ ๋ฆฐ๋‹ค.

์ „๋ฐ˜์ ์ธ ํŽธ์˜์„ฑ์—์„œ๋Š” MongoDB๊ฐ€ ๋” ์ ํ•ฉํ•œ ํŽธ์ด๋‹ค.
Couch๋Š” ์ผ๋ฐ˜์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ์„œ๋น„์Šค์˜ ๋ฉ”์ธ DB๋กœ๋Š” ์‚ฌ์šฉํ•˜๋Š”๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.




vs Couchbase

Couch ํ™˜๊ฒฝ์„ ์ ‘ํ• ๋•Œ ๊ฐ€์žฅ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๊ฒƒ ์ค‘ ํ•˜๋‚˜๊ฐ€ Couch* ์‹œ๋ฆฌ์ฆˆ์˜ ๊ดด์ƒํ•œ ์•„์ข…๋“ค์ด ๊ต‰์žฅํžˆ ๋งŽ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์ด Couchbase์ธ๋ฐ, ์ข€ ๋‹ค๋ฅธ ๋ฌผ๊ฑด์ด์ง€๋งŒ ๋ณดํ†ต CouchDB์˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ฒ„์ „์ด๋ผ๊ณ  ์ธ์‹์ด ๋˜๋Š” ํŽธ์ด๋‹ค.
ํ•˜์ง€๋งŒ ์™„์ „ํžˆ ๋ณ„๊ฐœ์˜ ํ”„๋กœ์ ํŠธ๊ณ , ๊ตฌ์กฐ๋„ ๋‹ค๋ฅด๋‹ค. ์ผ๋ถ€ ์—ญ์‚ฌ๋ฅผ ๊ณต์œ ํ•  ๋ฟ์ด๋‹ค.

์—ญ์‚ฌ๋ฅผ ๋Œ€์ถฉ ์ •๋ฆฌํ•˜์ž๋ฉด, CouchDB๋ฅผ ๋งŒ๋“ค์—ˆ๋˜ ํšŒ์‚ฌ๊ฐ€ Memcached๋ฅผ ๋งŒ๋“  ํšŒ์‚ฌ์™€ ํ•ฉ์ฐฉํ•ด์„œ Membase๋ผ๋Š” ๊ฒƒ์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, ๊ทธ๊ฒŒ Couchbase๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฑด ํ”„๋กœํ† ์ฝœ๋„ Memcached์˜ ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค.




์ฐธ์กฐ
https://stackoverflow.com/questions/3375494/nosql-mongodb-vs-couchdb
https://stackoverflow.com/questions/5578608/what-is-the-difference-between-couchdb-and-couchbase
https://www.javatpoint.com/couchdb-tutorial
https://ko.wikipedia.org/wiki/%EC%B9%B4%EC%9A%B0%EC%B9%98DB
https://www.integrate.io/blog/couchdb-vs-mongodb/