π§± NoSQL λ°μ΄ν°λ² μ΄μ€ μλ²½ μ 리
Monolith vs Microservices
λͺ¨λ리μ(Monolith) μν€ν
μ²λ νλμ ν° μμ€ν
μμ λͺ¨λ κΈ°λ₯μ΄ ν΅ν©λμ΄ μλ ννμ
λλ€.
λ°λ©΄ λ§μ΄ν¬λ‘μλΉμ€(Microservices) μν€ν
μ²λ κ° μλΉμ€κ° λ
립μ μΌλ‘ μ€κ³λμ΄ μμ λ§μ μν μ μνν©λλ€.
μ΄λ‘ μΈν΄ μλΉμ€λ³ λΉμ¦λμ€ νΉμ±μ λ§λ λ°μ΄ν°λ² μ΄μ€ μ νμ μ μ°μ±μ΄ μκΈ°λ©°, κ΄κ³ν(RDB) λμ NoSQL λ°μ΄ν°λ² μ΄μ€λ₯Ό νμ©νλ κ²½μ°κ° λ§μ΅λλ€.
π NoSQLμ΄λ?
NoSQLμ βNot Only SQLβμ μ½μλ‘, κΈ°μ‘΄μ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€κ° μλ λΉμ ν λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μν λ°μ΄ν°λ² μ΄μ€μ
λλ€.
SQLμ²λΌ ν
μ΄λΈ κ° κ΄κ³κ° λͺ
ννκ² μ μλμ§ μμΌλ©°, λ€μν ννμ λ°μ΄ν°λ₯Ό μ μ°νκ² μ μ₯ν μ μλ€λ κ²μ΄ ν΅μ¬ νΉμ§μ
λλ€.
NoSQLμ λ±μ₯ λ°°κ²½
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ νμ₯μ± νκ³λ₯Ό 극볡νκΈ° μν΄ λ±μ₯
λΉ λ°μ΄ν°, ν΄λΌμ°λ νκ²½, μ€μκ° μλ΅μ± λ± μλ‘μ΄ μꡬμ¬νμ μΆ©μ‘±νκΈ° μν΄ λ°μ
λ§μ΄ν¬λ‘μλΉμ€ νκ²½μμ λ 립μ λ°μ΄ν° κ΄λ¦¬κ° νμν΄μ§λ©΄μ λ리 μ¬μ©
β‘ NoSQLμ μ£Όμ νΉμ§
1οΈβ£ μ€μκ° μλ΅
100msλ₯Ό λμ΄κ°λ©΄ μ¬μ©μκ° μ§μ°μ 체κ°νλ€λ μ°κ΅¬ κ²°κ³Όκ° μμ΅λλ€.
λ°λΌμ NoSQLμ λΉ λ₯Έ μλ΅ μλκ° μ€μν μλΉμ€(μ: κ²μ, μ€μκ° μ±ν
λ±)μ μ ν©ν©λλ€.
2οΈβ£ νμ₯μ±
νΈλν½ κΈμ¦μ΄λ μ΄λ²€νΈ λ°μ μ μν νμ₯(horizontal scaling)μ΄ μ©μ΄ν©λλ€.
μλ²λ₯Ό μΆκ°νλ κ²λ§μΌλ‘ μ²λ¦¬λμ λμΌ μ μμ΅λλ€.
3οΈβ£ κ³ κ°μ©μ±
μλ² μ₯μ κ° λ°μν΄λ λ°μ΄ν° μμ€μ΄ μ΅μνλλ©°, λ³΅κ΅¬κ° λΉ λ¦
λλ€.
μ¦, νμ μλΉμ€λ₯Ό μμ μ μΌλ‘ μ μ§ν μ μμ΅λλ€.
4οΈβ£ ν΄λΌμ°λ λ€μ΄ν°λΈ
NoSQLμ ν΄λΌμ°λ νκ²½μ μ΅μ νλμ΄ μμ΅λλ€.
μλ²λ₯Ό μ§μ μ€μΉνκ±°λ μ΄μνμ§ μμλ λκ³ , DBaaS (Database as a Service) ννλ‘ μ½κ² νμ₯ κ°λ₯ν©λλ€.
5οΈβ£ λ¨μμ±
λ°μ΄ν° λͺ¨λΈμ΄ λ¨μνκ³ μ€ν€λ§ μ μ½μ΄ μμ΅λλ€.
μ¦, κ°λ°μκ° μλΉμ€μ λ§κ² μμ λ‘κ² λ°μ΄ν° ꡬ쑰λ₯Ό μ μν μ μμ΅λλ€.
πΎ NoSQL λ°μ΄ν° μ μ₯μμ μ£Όμ μ ν
NoSQLμ μ μ₯ λ°©μμ λ°λΌ μλ λ€ κ°μ§λ‘ λλ©λλ€.
μ ν μ£Όμ μμ νΉμ§
πΈ κ·Έλνν(Graph) Neo4j, ArangoDB κ΄κ³ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ μ μ₯ (μ: SNS μΉκ΅¬ κ΄κ³)
π 컬λΌν(Column) Cassandra, HBase λμ©λ λΆμκ³Ό λΉμ¦λμ€ μΈν
리μ μ€(BI)μ μ ν©
π λ¬Έμν(Document) MongoDB, CouchDB JSON κΈ°λ°, μ μ°ν μ€ν€λ§
π ν€-κ°ν(Key-Value) Redis, DynamoDB, Memcached κ°μ₯ λ¨μνκ³ λΉ λ¦, μΊμ/μ€μκ° μ²λ¦¬μ μ ν©
πΈ κ·Έλνν (Graph)
μν°ν° κ°μ κ΄κ³λ₯Ό ν¨μ¨μ μΌλ‘ μ μ₯νλ ννμ
λλ€.
μλ₯Ό λ€μ΄ SNSμ μΉκ΅¬ μΆμ², μμ
κ·Έλν, μΆμ² μμ€ν
λ±μμ μ μ©νκ² νμ©λ©λλ€.
κ° λ
Έλ(Node)λ κ°μ²΄λ₯Ό, μ£μ§(Edge)λ κ΄κ³λ₯Ό λνλ
λλ€.
π 컬λΌν (Column)
ν
μ΄λΈμ ν(row)μ΄ μλλΌ μ΄(column) λ¨μλ‘ λ°μ΄ν°λ₯Ό μ μ₯ν©λλ€.
λΉ
λ°μ΄ν° λΆμ, λ‘κ·Έ μ μ₯, BI λΆμ λ± λμ©λ λ°μ΄ν° μ²λ¦¬μ κ°μ μ κ°μ§λλ€.
λνμ μΌλ‘ Apache Cassandra, HBaseκ° μμ΅λλ€.
π λ¬Έμν (Document)
JSON ννλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ ꡬ쑰μ
λλ€.
νλμ λ¬Έμ(Document)κ° νλμ λ°μ΄ν° κ°μ²΄λ‘ κ°μ£Όλλ©°, μ€ν€λ§ λ³κ²½ μμ΄ μ μ°νκ² νμ₯ν μ μμ΅λλ€.
MongoDB, CouchDB, AWS DocumentDB λ±μ΄ λνμ μΈ μμμ
λλ€.
π ν€-κ°ν (Key-Value)
κ°μ₯ λ¨μν ꡬ쑰λ‘, βKeyβμ βValueβ μμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯ν©λλ€.
λ°μ΄ν° κ²μμ΄ λ§€μ° λΉ λ₯΄κ³ , μ€μκ° μλΉμ€λ μΊμ μμ€ν
μμ μμ£Ό μ¬μ©λ©λλ€.
Redis, AWS ElastiCache, DynamoDB, Memcached λ±μ΄ λνμ μ
λλ€.
β
μ 리
κ΅¬λΆ νΉμ§ λν κΈ°μ
κ·Έλνν κ΄κ³ μ€μ¬ Neo4j, ArangoDB
컬λΌν λμ©λ λΆμ Cassandra, HBase
λ¬Έμν JSON κΈ°λ°, μ μ°ν μ€ν€λ§ MongoDB, CouchDB
ν€-κ°ν λ¨μνκ³ λΉ λ¦ Redis, DynamoDB, Memcached
π§ λ§λ¬΄λ¦¬
NoSQLμ λ¨μν SQLμ λ체μ κ° μλλΌ,
νλμ λ€μν λ°μ΄ν° ꡬ쑰μ μλΉμ€ μꡬμ¬νμ λ§μΆ μλ‘μ΄ λ°μ΄ν°λ² μ΄μ€ ν¨λ¬λ€μμ
λλ€.
λΉ
λ°μ΄ν°, λ§μ΄ν¬λ‘μλΉμ€, μ€μκ° μλΉμ€κ° νμ°λ μλ‘ NoSQLμ μ€μμ±μ λμ± μ»€μ§κ³ μμ΅λλ€.