ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
NoSQL ??? ??
myrisinsun@gmail.com
??????..
NoSQL Distilled?
- ???? ???? ??? ??? ????
???? ????, ?? ??? ?
???? ?? ???? ?? ??
? ??? ??? ??? ?? ??!!
¡°??? ? ?? ???? ?? ?? ?? ? ???
???? ??? ????.¡±
????
?? ????? ???? ????? ???...
¡°MySQL ??? Oracle ???¡±
??? ???
???
??????==
?? ???? ??? ???? ???? ?????...
Relational
Database??? ??????? ??? ? ??? ???
??? ??? ??? ?? ??? ?? ??? ????
???? ?? ??? ??? ????, ???? ???? ????
????? ???? ????? ??? ???, ?? ???????
? ? ??????? ?????? ?? ??? ???? ???
??? SQL ???? ???? ??? ??? ?? ??? ??.
??? ????? ??, ????? ????? ??...?
??? ? ???? ??? ??? ??? ??
'??-?? ???'
??? ??
????#1
????#2
????#3
????
??? ??
TB_USR?
TB_USR_ADDR?
TB_USR_ORDER_MASTER?
TB_USR_ORDER_DETAIL?
TB_USR_ACCNT?
...?
..?
.
1990???
???? ?????? ???? ??????
???? ??? ???? ???
?
???,?
???? ??? ??? ???,?
???? ??????? ???? ???.
¡°OODB? ??? ??? ?? ???¡±?
http://hkpark.netholdings.co.kr/web/inform/default/inform_view.asp?
menu_id=9730&id=24304&parent_id=24303
(??? ???)?
??? ??? ?????
?? ?? ??? ?????
?.?.?.?.!
???
¡®?? ??????¡¯?? ? ??? ?? ???.?
?
'?? ??????'?
'?? ??????'?
?
?? ?? ???????? ??????? ??.?
?? ????? ??? ??, ??? ????
IntegrationDatabase by Martin Fowler?
http://martinfowler.com/bliki/IntegrationDatabase.html
?????
????
????
?????
'?? ??????¡¯? ??? ?? ??? ??.
? ?? ??????? ?? ???
??? ????
? ???? ???? ???
??? ???? ??? ??? ? ??. (???, ???..)?
??? ??? ?? ??? ?? ??
???.. ?? ???????
?
'?????? ??????¡¯!!
'?????? ??????'?
?
? ???????? ??/???? ??????? ???
???????? ??? ???? API(http)!!
ApplicationDatabase by Martin Fowler?
http://martinfowler.com/bliki/ApplicationDatabase.html
?????
????
????
?????
API
???..?
?
???? ??? ?????? ?????
????? ???? ??!
?? ??? ???? ???? ???
-> ??? ??, ??? ??? ???
-> ???? ?? ???? ?? ??. (Scale-Out)?
?
??? ??..?
?
'??? ??????'
??? ??????? ????? ?? ??.
?????? ????? ???? ??.?
Oracle RAC ? ??? '?? ??? ??'? ??.?
????? ??? ? ?? ?? ???? ?????
??? ?????? ??? ?? ??? ? ??? SPOF!
??? ??? ????....?
?????? ???? ???? ?? ????.
???? ??? ??
???..?
?
?? ??? ??? ??? ?? ?? ??? ???? ??.?
?
?? Google, Amazon.
????
??? ?? ??? ??? ??????
?? ? ?? ???? ??, ?????? ??? ????
?? ??? ???? ??
???? NoSQL ???..
NoSQL?
1998? 'NoSQL' ??? ???? ??.
??? ?? ??? ??? ??? NoSQL? ??.
RDBMS ??? NoSQL?
http://en.wikipedia.org/wiki/Strozzi_NoSQL_(RDBMS)
?? ???? NoSQL ??? ??(?)??
2009? ?? ??????
??? ??? ??? ???? ??
?? ??? ?? ??? ????
-??? ?? ??? ?? ???
-?? ???? ???
-?? ??? ??? ?? ??? ???
??? NoSQL ??
???? ?? ?? ??? ??? ??? ????.
NoSQL??
????? ???? ??? ??,?
??? ??? ???? ??.
??? ?? ????
'open source, distributed, non-relational¡¯? ???,?
Voldemort, Cassandra, Dynomite, HBase, Hypertable,
CouchDB?? ???.
NoSQL? ??? '??'??????
???? ??? ???? ? ??.
san francisco nosql meetup?
http://www.eventbrite.com/e/nosql-meetup-tickets-341739151?
http://www.johnandcailin.com/blog/john/san-francisco-nosql-meetup
NoSQL? ???? ??
? ??? ??? ???? ???
? ?????? ? ????
? ?????
? 21?? ? ??? ?? ?????.
? ???? ??
NoSQL? ???? ? ??? ?? ????
??? ??????? ???? ?? ?????.?
(???, ???, ??? ??, ?? ??? ???..)
???! ?? ??? ????
?
?
??? ????????
'??'?? '???'?? ???.
PolyglotPersistence?
http://martinfowler.com/bliki/PolyglotPersistence.html
?? ??? ???(Polyglot Persistence)?
???? ??? ???? ?? ?????
?? ?? ??? ???? ???? ?.
(Image. http://martinfowler.com/bliki/PolyglotPersistence.html
NoSQL ? ????? ?? ? ????
'??? ??? ??'? ??????.
NoSQL ? 4?? ??? ??
?-? ?? ?? ??? ???
¡®???¡¯? ??? 3??? ¡®?? ??¡¯? ??? ??.?
?? ???
?? ??(Aggregate Orientation)
'??' DDD(??? ?? ??)?? ?? ??.?
'??? ??? ?? ??? ??? ??'? ??.
?? ??? ???? ???? '??' ??? ???
??? ??? ?? ???? ?? ??? ??? ????
???? ???? ??.
(? ??? ???)?
?? ??(?)? '??(Aggregate)'?? ??? ??
???? ??? ??? ??????
??? ?? ??. ?? ???? ?? ??? ???? ??
(Image. http://martinfowler.com/bliki/AggregateOrientedDatabase.html)
???? ???? ????
?? ??
???? ??? ???? ??? ? ??(Querying)???
?? ???? ??? ???.
?? ??? ?????
??? ??? ??? ??? ???? ??????? ??.?
(?? ? ?? ??)
?? ?? ???? ??
??? ??? ????
??? ?????? ?? ????? ?? ??? ??? ?? ???
??? ??? ????? ?? ?? or ?? ?? ? ??.
???? ???????
?? ??? ?? ????? ???? ??.?
??? ??? ?? ??? ??? ???
(?? ?? ??? ?????? ?? ???? ?????)
*???? ???? ??? ??? ? ???? ?? ??? ???
???.?
?? ????? ??? ??? '??'? ??? ???? ?????!
4? ??? ??
? ?-? ??
? ?? ??? ??
? ?? ??? ??
? ??? ??
? ?-? ??? ??(Key-Value)
(Image. http://scraping.pro/where-nosql-practically-used)
? ?? ??? ??(Document)
(Image. http://www.couchbase.com/cn/why-nosql/nosql-database)
?-? ??, ?? ??? ??
????
? ??? ???? ??? ???? ?? ???? ??
???
?-? ??????: ?? ??? ????
??? ?? ??. ??? ??? ????? ??? ? ??.
?? ??? ???: ?? ??? ???
??? ??? ???? ??? ??? ? ??.
?? ??? ???? ??? ???? ??? ??? ???? ??? ? ?
? ?? ???
?-? ??????? ????? ??? ???? ???? ??? ???
(?: String, int, hashMap, List...)
???..?
?-? ???? ?? ??? ??? ? ??? ?? ????.
?? ??????? ?-? ????? ???? ?? ID??
???? ????
??(key-value)? ??? ???? ?? ? ??? ?? ??
???? ??? ??
??? ???? ???..?
?-? ??? ?????? ?? ?? ??? ???
?? ????????? ?? ?? ??? ??? ????
??
?? ??? ??(Column Family)
??? ??????? table ?? ????,?
??? HashMap ??? ???? ???.
Row Key1
??
???
???
abc@g
Column Key
Column Value
Column Family
Row Key2
??
???
??
???..
Column Key
Column Value
¡­¡­
¡­¡­
???.. Super Column Family? ??? ?? ???
?
??? ????? ??.
Row Key1
??
???
???
abc@g
Super Column1
??1
¡­
??#2
¡­
Super Column2
?? ??? ????????
???? ?? ?? ???? ??.
??????
?? ???? ??? ??????
?? ?? ???? ????? ???.
?? (????! ?? ???)?
???? ?? ??? ?? ?? ????,?
? ??? ???? ???? ??, ????.
???? ???? 2?? ??
?-???
? ?? ??.?
?? ???? ? ?? ?? ???? ??? ???(????,
????)? ??
?(??)-???
?? ???? ??? ??? ???
?? ?? ?? ???? ???? ??? ??? ??.
??? ??(Graph)
'??'? ??? ??.?
'???'? ??? ??? ????? ??? ??.?
??(??)? ??(?????)?? ??? ???? ??.
?
???
ZionT
??????
FAVORITE
FAVORITE
FAVORITE
FRIEND
FAVORITE
?? ??? ????? ??? ?????
?? ???? ?? ???? ???.?
?? ???? ?? ??? ????? ?? ??!
???? ????? ?? ???? ???? ??? ??
????? ??? ???? ACID???? ??.?
??? ??? ?? ??
NoSQL? ??? ??? 3?? ??? ??? ??.?
?
?? ???? ?????
-??? ??? ???? ???
-NoSQL? ???? ??? ??? ??????
??.. ???, ???? ???
?????
??????? ??? ???? ????
->?
???? ???? ??. (??, ??..)?
(???) ??? ?? ??? ?? ???
???? ???? ???? Null ?? ???
???..?
??? ??.
????? ??
???? ???? ??????
?? ??? ??? ???? ?????.
???
???????? -> ?????? ????
???? ????!!
????
???? ?? ??? ?????? ??? ??? ???.?
?? ?? ??? ??????.. ???? ?? ? ???
??? '??? ?'?
??? ??????? ??? ?(Materialized View)? ???
NoSQL??? ??.
??? ??????????
?? ?? ????? ??? ?? ???? ???? ??.?
NoSQL ?? ??? ??? ??.
NoSQL?? ??? ? ?????
-?? ??? ??? ??? ? ??.?
(???? ??? ?? ??)?
-?? ???? ?? ???? ??? ? ???
(??? ?? ???? ??)
?? ?? or ?? ??? ???? ??? ? ??.?
'??'
????(scale up)?
??? ??? ??? ???? ??? ?? ???.
????(scale out)?
????? ??? ??? ??? ???
1? 2?. ???? + ???? ??.
??? ???? ???? ??!?
??? ?? ?? ??? ??????.
???.. ?? ???? ????? ??? ???~ :)
???.. NoSQL? ???? ??? ?
??? ???????? ??? ??????.
????? ??? ??? ?? ?? ??
??(Replication)?
?? ???? ?? ??? ???? ??.
??(Sharding)?
???? ???? ?? ?? ??? ??? ??.
??? ????
??? ????? ?? ?? ??? ??.
A ~ E
??(Sharding)
???? ??? ??? ??? ??.
Node1
F ~ J
Node2
U ~ Z
NodeX
¡­¡­¡­
?? ??
Apple
¡­
¡­
Juice
¡­
¡­
University
¡­
¡­
????
?
??? ??????? ??. ??? ?? ??.?
??? ?? ?? ??. ?? ??? ??? ???.
???
??? ???? ??? ?? ???.(??? ???? ???)?
?? ???? ???(??)? ?? ??? ??.?
??? ??? (??) ??? ???? ??. (global???)
??#1. ???-????
?? ????? ???? ??. SPOF?
????? ???->???? ? ??. ???? ???
??? ???, ?????? ??. ??? ??? ??
M
S S
?? ??
Read/Write
Read Read
??#2. ??-?-??
?? ???? ???? ??, ?? ???
?? ? ?? ???? ?? ???
'?? ??¡¯ ??. ?? ???? ?? ???? ??
Node
Node Node
?? ??
??
??? ????????
???? ???? ???
?
????!!!
????
NoSQL??? ???? ? ??? ??.
???? ????
?? ??(write-write conflict)
???A? ??? ??? ???B? ?? ???? ?? ??.?
(??? ????? ???? ???)
Node
???A
???B
Apple
¡­
¡­
???A???B
??? ??? ????? ?? ??
??? ??(Pessimistic)?
??? ???? ?? ??? ??.?
?? ??? Lock? ???? ??
??? ??? ??? ??.?
???..?
?? ??? ?? Lock ??????
???(?????? ?? ??)? ?????
?? ?? ?? ??
??? ??(optimistic)?
??? ????? ??? ?? ???? ??? ??? ??
????? ??? ????? ?? ? ?? ????? ???? ??
? ?????
?
???
?
? ????? ?? ???? ??? ????? ???
(???? ???? diff,merge??)
???(???? ?? ??)? ???
???
???? ??? ???? ??? ??? ??
?? ????
??-?? ??(read-write conflict)?
==???? ??(inconsistent read)
??? ????
?? ??? ??? ?? ??? ???? ????
(??? ????)
??? ??????? '????'?? ??
??
????
???A ????
??? ????
????? ??? ????
???? ?????
?? ???
*??? ???(Eventual consistency)?
?? ???? ???? ???? ?? ? ???,?
?? ?? ??? ?? ??? ?????
???
?? ??
???
???
???
??
????
(??)
???
?? ??
???
??
???
??
??? ???? ???? ???
???? ???
??? ????? ?????
??? ???? ??? ???? '????'?
?? ???? ?? ?? ??? ?????
'?? ???'?
??? ?? ??? ??? ? ?? ?? ???? ??
???...?
???
??
1.???
2.??
??? ??
??? ??(Sticky Session)?
??? ???? ??? ??? ??? ?? ??.?
???, ?? ??? ??? ?? ?? ??.
?? ????
???? ????? ???
??? ???? ?? ??? ?? ???? ??.?
??? ??? ????? ? ??? ??.
????.. ?????? ????
???? ?? ??? ???? '??'? ??? ? ??.?
(???) ??? ?? ? ?? ??.
CAP???
Consistency, Availability, Partition tolerance ? ???.
???(Consistency)?
?? ??? ?? ??? ??? ??? ??? ??.
???(Availability)?
(????? ???? ????)?
???? ? ? ??? ??? ?????
? ??? ?? ??? ??.(??, ??)
?? ???(Partition tolerance)?
???? ? ?? ??/?? ???? ??/?? ?? ????
??? ????? ? ??????? ??.
CAP???..
'????? 3??? ???? ??? ? ??'?
?? ?? ????? ??.
????? ??? ???? ??????
???? ???..
?? ???? ????? ?????
???? ??? ???? ???? ?? ?.
CAP Theorem, ??? ???
http://eincs.com/2013/07/misleading-and-truth-of-cap-theorem/
????? (??,??) ?????
??? ???? ?? ??? ?????,
??? ?? ??? ????? ?????
????? ????? ??? ??.
??? ??? ?? ??? ????? ?? ????
??? ?????.
?? ???..
???? ???
?
Amazon's Dynamo?? ????
???? ??? ???? ????
???? ??? ???? ????? ???? ??.
?? ?? ????? ?? ? ????
?? ???? ??? ????? ??? ??? ??? ???
??? ??? ?????
???? ??? ????? ??? ??
???? ??
????? ?? Read? ??? ??? ??????
??? ??? ???? ?????
???? ???? ???? ?? ?(?) ??? ????
???? ???
'???'? ???? ?? 100% ??????
'???'? ??? ???? ???? ??? ??? ? ??.
???? ?????
??? ???? ????? ??? ??????...?
???..?
??? ?? ??? ??? ??? ? ??.
?? ???
??? ???? ?-?? ???????
?? ?? expire ??? ?? ?? ?? ? ?? ??? ??.
??? ? ?? ??? ???? ????? ??? ????
? ???.
????.. ?
???? ???? ?????
??? ?? ??? ???? ????
??, ?? ???(write-quorum)
??? ???? ?? ?(W)??
??? ???? ?? ?(N)? ??? ??? ?.
W > N / 2
?? ???
?? ???? ??? ???? ?? ???? ??? ??.?
?
?? ? ???? ?? ?? ?(R)??
?? ? ???? ?? ?? ?(W)?
????(N)
R + W > N
???! ?? ???? ?? ? ??.
???? 3? ???..
????? ????
?? ???? ??? ????? 3?? ??.
?? ??? ???? ??? ?? ???? ?? ??
?? ??? ???? ?? ? ???? ???? ?? ???
??.
???? ??? ?? ? ?? ???? ?? ??? ?? ??.
???? ??
?..?
??? ?? ??? ??? ???? ?? ??????
???? ?? ??? ??? ??, ?? ??? ?? ???
???
-> ??? ????, ??? ???? ?? ??? ???!
???? ??? ??? ????
??? ????? ??? ??!!
??? ???? ???
????? ???? ?? ?????? ???? ????
???? ?? ??? ???? ???? ?? ??
?????.
?? ???? ? ????
?????? ???? '?? ???'? ???? ??.
?? ??? ??
? ????? ??? (??? ??? ?? ?? ??? ??)
? GUID (??? ??, ?? ??? ???)
? Hash ???? ?? (GUID? ?? ?? ??)
? ??? ????? ?? ??? (??? ?? ??? ??)
? ?? ??? ??? ??? ?? ??? ?? ???
?: CouchDB? ???+??? ?? ??
?? ???? ???? ?? ???? ? ???
(???? or ???-????? ????? ??)
??? ??-?-?? ?? ??????
?? ???? ???? ?? ??? ??? ??.
?????? ????
?? ??? ??? ?? ???? ???.?
(??? ???? ??? ???? ???)
??-?-?? NoSQL ?????? ???
?? ???? ??
? '?? ???'? ??? ???? ??
? ? ??? ???? ??? ???? ??
? ??? ??? ?? ?? ??, ?????? ??.
??
? ??? ???? ???? ??? ??? ??? ???.?
?? ??? ??? ? ?? ???? ???
??? ??? ?? ???? 0?? ???
-> ?? ?? ??? ?? ?? ???? ??? ???
???..?
?? ?????
????? ??? ????? ??? ???.
?-??? ???
? ????? ?? ??? ??? ??
? ???? ??? ???? ?? ??
? ??? ??? '??'? ?? ??
??? 2??? ??? ??
? ??: ??? ???? key-value ? ???
??? ??: ? ??? ????? ???? ?? ???
??/??/??
??/??/??
??A/????
??B/????
??C/???
??A/????
??B/????
??C/???
Node1
??A/????
??B/????
??C/???
Node2
Map Reduce
????
Map
??
??
Reduce
??A/????
??A/???
??B/????
??B/???
??C/????
??C/??? ?????
???!!
Map
??A/????
??B/????
??A/????
??A/????
??A/???
Reduce??A/????
??B/???
???
??
??? ??? ??
?? ??? ??? ???
(Combinable reducer)
????? ??? ?? ????
?? ???? ???? ??? ??.?
?? ??? ?? ??? ??? ??
??? ??? ??? ?? ??? ??.
?? ??? ??? ?? ????? ??.
?-??? ?? ??
? ??? ? ??? ???? ?????
??? ??? ? ?? ???? ?? ??
?? ?? ??? ??????
????? ??? ??? ???? ?.?
(=??? ??? ??? ??? ?????)
?????
??? ?? ??? ???? ????? ??? ?????,?
?
?????
???? ??? ??? ?? ???? ???? ????
?-??? ???? ??
?-??? ??? ?????, ???? ??? ??? ??? ?? ?
?? ??. (???? ????? ??)
?) ??? ??? ?? ?? ?? ?? ??. 2??? ??.?
1. ??? ?/? ???? ???
2. ?? ??? ???? ?? ??? ???? ??
Map(A) -> Reduce(B) -> Map(C) -> Reduce(D)
A. ?? ?? ???? ?? key-value ???
B. A? ??? ???? ??? ?????? ???
C. B? ??? ???? ?? ??? key-value? ???
D. C? ??? ???? ?? (????? ???)
????? ??
??? ??? ?? ??? ???? ????(?-???)?
'??(??)'? ????.
?? ??? ?? ??? ???? ? ??.
?-??? ??????? ?? ????? ???? ????
?? ?? ???? ? ??? ??? ??, ????
?-??? ??
?-??? ??? ??? ??? ??? ? ??.
??? ?? ?? ?????? ??? ???
??? '??'? ?-??? ??? ????
??? '???'? ???? SQL? ??? ?????
?-??? ????? ??? ??
'??? ??'
??? ???? ???? ???.?
??? ?? ??? ?? ????? ???.
??? ???? ?? ??? ????
'??? ????'? ??.
? ??? ??? ???
??? ?? ???? ???? ? ??? ???
??? ??? ? ? ???
??? ??? ??? ??? ?? ??? ???.
???? ?? ???? ???????
???? ?? ???? ??? ??? ?? ??.

More Related Content

NoSQL ??? ??

  • 2. ??????.. NoSQL Distilled? - ???? ???? ??? ??? ???? ???? ????, ?? ??? ? ???? ?? ???? ?? ?? ? ??? ??? ??? ?? ??!! ¡°??? ? ?? ???? ?? ?? ?? ? ??? ???? ??? ????.¡±
  • 3. ???? ?? ????? ???? ????? ???... ¡°MySQL ??? Oracle ???¡± ??? ??? ??? ??????== ?? ???? ??? ???? ???? ?????...
  • 4. Relational Database??? ??????? ??? ? ??? ??? ??? ??? ??? ?? ??? ?? ??? ???? ???? ?? ??? ??? ????, ???? ???? ???? ????? ???? ????? ??? ???, ?? ??????? ? ? ??????? ?????? ?? ??? ???? ??? ??? SQL ???? ???? ??? ??? ?? ??? ??.
  • 5. ??? ????? ??, ????? ????? ??...? ??? ? ???? ??? ??? ??? ?? '??-?? ???' ??? ?? ????#1 ????#2 ????#3 ???? ??? ?? TB_USR? TB_USR_ADDR? TB_USR_ORDER_MASTER? TB_USR_ORDER_DETAIL? TB_USR_ACCNT? ...? ..? .
  • 6. 1990??? ???? ?????? ???? ?????? ???? ??? ???? ??? ? ???,? ???? ??? ??? ???,? ???? ??????? ???? ???. ¡°OODB? ??? ??? ?? ???¡±? http://hkpark.netholdings.co.kr/web/inform/default/inform_view.asp? menu_id=9730&id=24304&parent_id=24303
  • 7. (??? ???)? ??? ??? ????? ?? ?? ??? ????? ?.?.?.?.! ??? ¡®?? ??????¡¯?? ? ??? ?? ???.? ? '?? ??????'?
  • 8. '?? ??????'? ? ?? ?? ???????? ??????? ??.? ?? ????? ??? ??, ??? ???? IntegrationDatabase by Martin Fowler? http://martinfowler.com/bliki/IntegrationDatabase.html ????? ???? ???? ?????
  • 9. '?? ??????¡¯? ??? ?? ??? ??. ? ?? ??????? ?? ??? ??? ???? ? ???? ???? ??? ??? ???? ??? ??? ? ??. (???, ???..)? ??? ??? ?? ??? ?? ?? ???.. ?? ??????? ? '?????? ??????¡¯!!
  • 10. '?????? ??????'? ? ? ???????? ??/???? ??????? ??? ???????? ??? ???? API(http)!! ApplicationDatabase by Martin Fowler? http://martinfowler.com/bliki/ApplicationDatabase.html ????? ???? ???? ????? API
  • 11. ???..? ? ???? ??? ?????? ????? ????? ???? ??! ?? ??? ???? ???? ??? -> ??? ??, ??? ??? ??? -> ???? ?? ???? ?? ??. (Scale-Out)? ? ??? ??..? ? '??? ??????'
  • 12. ??? ??????? ????? ?? ??. ?????? ????? ???? ??.? Oracle RAC ? ??? '?? ??? ??'? ??.? ????? ??? ? ?? ?? ???? ????? ??? ?????? ??? ?? ??? ? ??? SPOF! ??? ??? ????....? ?????? ???? ???? ?? ????. ???? ??? ??
  • 13. ???..? ? ?? ??? ??? ??? ?? ?? ??? ???? ??.? ? ?? Google, Amazon. ???? ??? ?? ??? ??? ?????? ?? ? ?? ???? ??, ?????? ??? ???? ?? ??? ???? ??
  • 14. ???? NoSQL ???.. NoSQL? 1998? 'NoSQL' ??? ???? ??. ??? ?? ??? ??? ??? NoSQL? ??. RDBMS ??? NoSQL? http://en.wikipedia.org/wiki/Strozzi_NoSQL_(RDBMS)
  • 15. ?? ???? NoSQL ??? ??(?)?? 2009? ?? ?????? ??? ??? ??? ???? ?? ?? ??? ?? ??? ???? -??? ?? ??? ?? ??? -?? ???? ??? -?? ??? ??? ?? ??? ??? ??? NoSQL ?? ???? ?? ?? ??? ??? ??? ????.
  • 16. NoSQL?? ????? ???? ??? ??,? ??? ??? ???? ??. ??? ?? ???? 'open source, distributed, non-relational¡¯? ???,? Voldemort, Cassandra, Dynomite, HBase, Hypertable, CouchDB?? ???. NoSQL? ??? '??'?????? ???? ??? ???? ? ??. san francisco nosql meetup? http://www.eventbrite.com/e/nosql-meetup-tickets-341739151? http://www.johnandcailin.com/blog/john/san-francisco-nosql-meetup
  • 17. NoSQL? ???? ?? ? ??? ??? ???? ??? ? ?????? ? ???? ? ????? ? 21?? ? ??? ?? ?????. ? ???? ??
  • 18. NoSQL? ???? ? ??? ?? ???? ??? ??????? ???? ?? ?????.? (???, ???, ??? ??, ?? ??? ???..) ???! ?? ??? ???? ? ? ??? ???????? '??'?? '???'?? ???.
  • 19. PolyglotPersistence? http://martinfowler.com/bliki/PolyglotPersistence.html ?? ??? ???(Polyglot Persistence)? ???? ??? ???? ?? ????? ?? ?? ??? ???? ???? ?. (Image. http://martinfowler.com/bliki/PolyglotPersistence.html
  • 20. NoSQL ? ????? ?? ? ???? '??? ??? ??'? ??????. NoSQL ? 4?? ??? ?? ?-? ?? ?? ??? ??? ¡®???¡¯? ??? 3??? ¡®?? ??¡¯? ??? ??.? ?? ???
  • 21. ?? ??(Aggregate Orientation) '??' DDD(??? ?? ??)?? ?? ??.? '??? ??? ?? ??? ??? ??'? ??. ?? ??? ???? ???? '??' ??? ??? ??? ??? ?? ???? ?? ??? ??? ???? ???? ???? ??. (? ??? ???)? ?? ??(?)? '??(Aggregate)'?? ??? ??
  • 22. ???? ??? ??? ?????? ??? ?? ??. ?? ???? ?? ??? ???? ?? (Image. http://martinfowler.com/bliki/AggregateOrientedDatabase.html)
  • 23. ???? ???? ???? ?? ?? ???? ??? ???? ??? ? ??(Querying)??? ?? ???? ??? ???. ?? ??? ????? ??? ??? ??? ??? ???? ??????? ??.? (?? ? ?? ??)
  • 24. ?? ?? ???? ?? ??? ??? ???? ??? ?????? ?? ????? ?? ??? ??? ?? ??? ??? ??? ????? ?? ?? or ?? ?? ? ??. ???? ??????? ?? ??? ?? ????? ???? ??.? ??? ??? ?? ??? ??? ??? (?? ?? ??? ?????? ?? ???? ?????) *???? ???? ??? ??? ? ???? ?? ??? ??? ???.? ?? ????? ??? ??? '??'? ??? ???? ?????!
  • 25. 4? ??? ?? ? ?-? ?? ? ?? ??? ?? ? ?? ??? ?? ? ??? ??
  • 26. ? ?-? ??? ??(Key-Value) (Image. http://scraping.pro/where-nosql-practically-used)
  • 27. ? ?? ??? ??(Document) (Image. http://www.couchbase.com/cn/why-nosql/nosql-database)
  • 28. ?-? ??, ?? ??? ?? ???? ? ??? ???? ??? ???? ?? ???? ?? ??? ?-? ??????: ?? ??? ???? ??? ?? ??. ??? ??? ????? ??? ? ??. ?? ??? ???: ?? ??? ??? ??? ??? ???? ??? ??? ? ??. ?? ??? ???? ??? ???? ??? ??? ???? ??? ? ? ? ?? ??? ?-? ??????? ????? ??? ???? ???? ??? ??? (?: String, int, hashMap, List...)
  • 29. ???..? ?-? ???? ?? ??? ??? ? ??? ?? ????. ?? ??????? ?-? ????? ???? ?? ID?? ???? ???? ??(key-value)? ??? ???? ?? ? ??? ?? ?? ???? ??? ?? ??? ???? ???..? ?-? ??? ?????? ?? ?? ??? ??? ?? ????????? ?? ?? ??? ??? ???? ??
  • 30. ?? ??? ??(Column Family) ??? ??????? table ?? ????,? ??? HashMap ??? ???? ???. Row Key1 ?? ??? ??? abc@g Column Key Column Value Column Family Row Key2 ?? ??? ?? ???.. Column Key Column Value ¡­¡­ ¡­¡­
  • 31. ???.. Super Column Family? ??? ?? ??? ? ??? ????? ??. Row Key1 ?? ??? ??? abc@g Super Column1 ??1 ¡­ ??#2 ¡­ Super Column2
  • 32. ?? ??? ???????? ???? ?? ?? ???? ??. ?????? ?? ???? ??? ?????? ?? ?? ???? ????? ???. ?? (????! ?? ???)? ???? ?? ??? ?? ?? ????,? ? ??? ???? ???? ??, ????.
  • 33. ???? ???? 2?? ?? ?-??? ? ?? ??.? ?? ???? ? ?? ?? ???? ??? ???(????, ????)? ?? ?(??)-??? ?? ???? ??? ??? ??? ?? ?? ?? ???? ???? ??? ??? ??.
  • 34. ??? ??(Graph) '??'? ??? ??.? '???'? ??? ??? ????? ??? ??.? ??(??)? ??(?????)?? ??? ???? ??. ? ??? ZionT ?????? FAVORITE FAVORITE FAVORITE FRIEND FAVORITE
  • 35. ?? ??? ????? ??? ????? ?? ???? ?? ???? ???.? ?? ???? ?? ??? ????? ?? ??! ???? ????? ?? ???? ???? ??? ?? ????? ??? ???? ACID???? ??.? ??? ??? ?? ?? NoSQL? ??? ??? 3?? ??? ??? ??.? ? ?? ???? ????? -??? ??? ???? ??? -NoSQL? ???? ??? ??? ??????
  • 36. ??.. ???, ???? ??? ????? ??????? ??? ???? ???? ->? ???? ???? ??. (??, ??..)? (???) ??? ?? ??? ?? ??? ???? ???? ???? Null ?? ??? ???..? ??? ??.
  • 37. ????? ?? ???? ???? ?????? ?? ??? ??? ???? ?????. ??? ???????? -> ?????? ???? ???? ????!! ???? ???? ?? ??? ?????? ??? ??? ???.? ?? ?? ??? ??????.. ???? ?? ? ???
  • 38. ??? '??? ?'? ??? ??????? ??? ?(Materialized View)? ??? NoSQL??? ??. ??? ?????????? ?? ?? ????? ??? ?? ???? ???? ??.? NoSQL ?? ??? ??? ??. NoSQL?? ??? ? ????? -?? ??? ??? ??? ? ??.? (???? ??? ?? ??)? -?? ???? ?? ???? ??? ? ??? (??? ?? ???? ??)
  • 39. ?? ?? or ?? ??? ???? ??? ? ??.? '??' ????(scale up)? ??? ??? ??? ???? ??? ?? ???. ????(scale out)? ????? ??? ??? ??? ??? 1? 2?. ???? + ???? ??. ??? ???? ???? ??!? ??? ?? ?? ??? ??????. ???.. ?? ???? ????? ??? ???~ :)
  • 40. ???.. NoSQL? ???? ??? ? ??? ???????? ??? ??????. ????? ??? ??? ?? ?? ?? ??(Replication)? ?? ???? ?? ??? ???? ??. ??(Sharding)? ???? ???? ?? ?? ??? ??? ??. ??? ???? ??? ????? ?? ?? ??? ??.
  • 41. A ~ E ??(Sharding) ???? ??? ??? ??? ??. Node1 F ~ J Node2 U ~ Z NodeX ¡­¡­¡­ ?? ?? Apple ¡­ ¡­ Juice ¡­ ¡­ University ¡­ ¡­
  • 42. ???? ? ??? ??????? ??. ??? ?? ??.? ??? ?? ?? ??. ?? ??? ??? ???. ??? ??? ???? ??? ?? ???.(??? ???? ???)? ?? ???? ???(??)? ?? ??? ??.? ??? ??? (??) ??? ???? ??. (global???)
  • 43. ??#1. ???-???? ?? ????? ???? ??. SPOF? ????? ???->???? ? ??. ???? ??? ??? ???, ?????? ??. ??? ??? ?? M S S ?? ?? Read/Write Read Read
  • 44. ??#2. ??-?-?? ?? ???? ???? ??, ?? ??? ?? ? ?? ???? ?? ??? '?? ??¡¯ ??. ?? ???? ?? ???? ?? Node Node Node ?? ?? ??
  • 45. ??? ???????? ???? ???? ??? ? ????!!! ???? NoSQL??? ???? ? ??? ??.
  • 46. ???? ???? ?? ??(write-write conflict) ???A? ??? ??? ???B? ?? ???? ?? ??.? (??? ????? ???? ???) Node ???A ???B Apple ¡­ ¡­ ???A???B
  • 47. ??? ??? ????? ?? ?? ??? ??(Pessimistic)? ??? ???? ?? ??? ??.? ?? ??? Lock? ???? ?? ??? ??? ??? ??.? ???..? ?? ??? ?? Lock ?????? ???(?????? ?? ??)? ????? ?? ?? ?? ??
  • 48. ??? ??(optimistic)? ??? ????? ??? ?? ???? ??? ??? ?? ????? ??? ????? ?? ? ?? ????? ???? ?? ? ????? ? ??? ? ? ????? ?? ???? ??? ????? ??? (???? ???? diff,merge??) ???(???? ?? ??)? ??? ??? ???? ??? ???? ??? ??? ??
  • 49. ?? ???? ??-?? ??(read-write conflict)? ==???? ??(inconsistent read) ??? ???? ?? ??? ??? ?? ??? ???? ???? (??? ????) ??? ??????? '????'?? ?? ?? ???? ???A ???? ??? ???? ????? ??? ???? ???? ?????
  • 50. ?? ??? *??? ???(Eventual consistency)? ?? ???? ???? ???? ?? ? ???,? ?? ?? ??? ?? ??? ????? ??? ?? ?? ??? ??? ??? ?? ???? (??) ??? ?? ?? ??? ?? ??? ?? ??? ???? ???? ??? ???? ???
  • 51. ??? ????? ????? ??? ???? ??? ???? '????'? ?? ???? ?? ?? ??? ????? '?? ???'? ??? ?? ??? ??? ? ?? ?? ???? ?? ???...? ??? ?? 1.??? 2.?? ??? ??
  • 52. ??? ??(Sticky Session)? ??? ???? ??? ??? ??? ?? ??.? ???, ?? ??? ??? ?? ?? ??. ?? ???? ???? ????? ??? ??? ???? ?? ??? ?? ???? ??.? ??? ??? ????? ? ??? ??. ????.. ?????? ???? ???? ?? ??? ???? '??'? ??? ? ??.? (???) ??? ?? ? ?? ??.
  • 53. CAP??? Consistency, Availability, Partition tolerance ? ???. ???(Consistency)? ?? ??? ?? ??? ??? ??? ??? ??. ???(Availability)? (????? ???? ????)? ???? ? ? ??? ??? ????? ? ??? ?? ??? ??.(??, ??) ?? ???(Partition tolerance)? ???? ? ?? ??/?? ???? ??/?? ?? ???? ??? ????? ? ??????? ??.
  • 54. CAP???.. '????? 3??? ???? ??? ? ??'? ?? ?? ????? ??. ????? ??? ???? ?????? ???? ???.. ?? ???? ????? ????? ???? ??? ???? ???? ?? ?. CAP Theorem, ??? ??? http://eincs.com/2013/07/misleading-and-truth-of-cap-theorem/
  • 55. ????? (??,??) ????? ??? ???? ?? ??? ?????, ??? ?? ??? ????? ????? ????? ????? ??? ??. ??? ??? ?? ??? ????? ?? ???? ??? ?????. ?? ???..
  • 56. ???? ??? ? Amazon's Dynamo?? ???? ???? ??? ???? ???? ???? ??? ???? ????? ???? ??. ?? ?? ????? ?? ? ???? ?? ???? ??? ????? ??? ??? ??? ??? ??? ??? ????? ???? ??? ????? ??? ??
  • 57. ???? ?? ????? ?? Read? ??? ??? ?????? ??? ??? ???? ????? ???? ???? ???? ?? ?(?) ??? ????
  • 58. ???? ??? '???'? ???? ?? 100% ?????? '???'? ??? ???? ???? ??? ??? ? ??. ???? ????? ??? ???? ????? ??? ??????...? ???..? ??? ?? ??? ??? ??? ? ??. ?? ??? ??? ???? ?-?? ??????? ?? ?? expire ??? ?? ?? ?? ? ?? ??? ??.
  • 59. ??? ? ?? ??? ???? ????? ??? ???? ? ???. ????.. ? ???? ???? ????? ??? ?? ??? ???? ???? ??, ?? ???(write-quorum) ??? ???? ?? ?(W)?? ??? ???? ?? ?(N)? ??? ??? ?. W > N / 2
  • 60. ?? ??? ?? ???? ??? ???? ?? ???? ??? ??.? ? ?? ? ???? ?? ?? ?(R)?? ?? ? ???? ?? ?? ?(W)? ????(N) R + W > N ???! ?? ???? ?? ? ??.
  • 61. ???? 3? ???.. ????? ???? ?? ???? ??? ????? 3?? ??. ?? ??? ???? ??? ?? ???? ?? ?? ?? ??? ???? ?? ? ???? ???? ?? ??? ??. ???? ??? ?? ? ?? ???? ?? ??? ?? ??.
  • 62. ???? ?? ?..? ??? ?? ??? ??? ???? ?? ?????? ???? ?? ??? ??? ??, ?? ??? ?? ??? ??? -> ??? ????, ??? ???? ?? ??? ???! ???? ??? ??? ???? ??? ????? ??? ??!!
  • 63. ??? ???? ??? ????? ???? ?? ?????? ???? ???? ???? ?? ??? ???? ???? ?? ?? ?????. ?? ???? ? ???? ?????? ???? '?? ???'? ???? ??.
  • 64. ?? ??? ?? ? ????? ??? (??? ??? ?? ?? ??? ??) ? GUID (??? ??, ?? ??? ???) ? Hash ???? ?? (GUID? ?? ?? ??) ? ??? ????? ?? ??? (??? ?? ??? ??) ? ?? ??? ??? ??? ?? ??? ?? ??? ?: CouchDB? ???+??? ?? ??
  • 65. ?? ???? ???? ?? ???? ? ??? (???? or ???-????? ????? ??) ??? ??-?-?? ?? ?????? ?? ???? ???? ?? ??? ??? ??. ?????? ???? ?? ??? ??? ?? ???? ???.? (??? ???? ??? ???? ???)
  • 66. ??-?-?? NoSQL ?????? ??? ?? ???? ?? ? '?? ???'? ??? ???? ?? ? ? ??? ???? ??? ???? ?? ? ??? ??? ?? ?? ??, ?????? ??. ?? ? ??? ???? ???? ??? ??? ??? ???.? ?? ??? ??? ? ?? ???? ???
  • 67. ??? ??? ?? ???? 0?? ??? -> ?? ?? ??? ?? ?? ???? ??? ??? ???..? ?? ????? ????? ??? ????? ??? ???.
  • 68. ?-??? ??? ? ????? ?? ??? ??? ?? ? ???? ??? ???? ?? ?? ? ??? ??? '??'? ?? ??
  • 69. ??? 2??? ??? ?? ? ??: ??? ???? key-value ? ??? ??? ??: ? ??? ????? ???? ?? ??? ??/??/?? ??/??/?? ??A/???? ??B/???? ??C/??? ??A/???? ??B/???? ??C/??? Node1 ??A/???? ??B/???? ??C/??? Node2 Map Reduce ???? Map
  • 71. ?? ??? ??? ??? (Combinable reducer) ????? ??? ?? ???? ?? ???? ???? ??? ??.? ?? ??? ?? ??? ??? ?? ??? ??? ??? ?? ??? ??. ?? ??? ??? ?? ????? ??.
  • 72. ?-??? ?? ?? ? ??? ? ??? ???? ????? ??? ??? ? ?? ???? ?? ?? ?? ?? ??? ?????? ????? ??? ??? ???? ?.? (=??? ??? ??? ??? ?????) ????? ??? ?? ??? ???? ????? ??? ?????,? ? ????? ???? ??? ??? ?? ???? ???? ????
  • 73. ?-??? ???? ?? ?-??? ??? ?????, ???? ??? ??? ??? ?? ? ?? ??. (???? ????? ??) ?) ??? ??? ?? ?? ?? ?? ??. 2??? ??.? 1. ??? ?/? ???? ??? 2. ?? ??? ???? ?? ??? ???? ?? Map(A) -> Reduce(B) -> Map(C) -> Reduce(D) A. ?? ?? ???? ?? key-value ??? B. A? ??? ???? ??? ?????? ??? C. B? ??? ???? ?? ??? key-value? ??? D. C? ??? ???? ?? (????? ???)
  • 74. ????? ?? ??? ??? ?? ??? ???? ????(?-???)? '??(??)'? ????. ?? ??? ?? ??? ???? ? ??. ?-??? ??????? ?? ????? ???? ???? ?? ?? ???? ? ??? ??? ??, ????
  • 75. ?-??? ?? ?-??? ??? ??? ??? ??? ? ??. ??? ?? ?? ?????? ??? ??? ??? '??'? ?-??? ??? ???? ??? '???'? ???? SQL? ??? ????? ?-??? ????? ??? ??
  • 76. '??? ??' ??? ???? ???? ???.? ??? ?? ??? ?? ????? ???. ??? ???? ?? ??? ???? '??? ????'? ??. ? ??? ??? ??? ??? ?? ???? ???? ? ??? ??? ??? ??? ? ? ??? ??? ??? ??? ??? ?? ??? ???. ???? ?? ???? ??????? ???? ?? ???? ??? ??? ?? ??.