티스토리 뷰

Database

NoSQL의 종류

out of coding 2018. 6. 9. 19:52

NoSQL은 아직까지 저에게는 생소하지만 이제부터 조금 DB쪽을 파고 들까 해서 조금은 정리를 해볼까 합니다.


물론 회사 프로젝트가 NoSQL을 이용할정도가 아닌데 무조건 사용하는것은 아마도 좋지 않겠죠


일반적으로 NoSQL은 이전에 사용하던 관계형 DB에서 벗어났다고 생각하면 됩니다.


https://ko.wikipedia.org/wiki/NoSQL


그래서 장점도 있고 단점도 있습니다.


아래 설명은 저도 이것저것 보는중이라 틀린점도 있을수 있으니 유의 바랍니다.


1. Column


- HBase / 언어 : Java


하둡 기반에서 동작하고 다양한 하둡 의 도구들과 상호 운영성이 좋고, 수십 테러바이트가 넘는 빅데이터에 적합. 아파치 라이선스


- Cassandra / 언어 : Java


구글 BigTable의 데이터 모델과 Dynamo의 분산 기술을 결합해서 구현. 빅데이터에 적합. 아파치 라이선스


- Hypertable / 언어 : C++


HBase와 마찬가지로 구글의 Bigtable아키텍처를 기반으로 구현. C++로 구현돼 성능이 매우 뛰어나고 HQL이라는 언어를 제공해 편의성을 높임. 기업을 위한 상용 기술지원 서비스 제공


- SimpleDB / 언어 : Erlang


아마존에서 제공하는 클라우드 기반의 상용 데이터 스토어


2. Document


- MongoDB / 언어 : C++


설치∙개발이 매우 쉽고 매우 빠른 성능을 제공. 많은 곳에서 적용. JSON과 같이 웹서비스 영역에서 많이 활용되는 데이터를 바로 저장∙접근할 수 있는 다양한 언어의 API를 제공하기 때문에 개발자들이 쉽게 접근해 사용할 수 있는 큰 강점이 있음. PaaS와 같은 많은 플랫폼 클라우드 영역에서 기본적으로 지원하고 상용 기술지원 서비스 가능


- Couchbase / 언어 : C/C++, Erlang


2011년에 Document 기반의 CoouchDB와 메모리 캐싱

시스템(Key/Value 방식)인Membase가 합병하면서 기업 내 다양한 요구 사항에 대응하기 위해 구현된 시스템. 기술적 측면에서MongoDB와 많이 비교되기도 함. 기업에서 설치∙관리가 편리한 웹 기반의 GUI을 제공하나 2개의 노드에 대해만 무료이고 그 이상은 기업 버전을 구매해야 함


3. Key/Value


- Redis / 언어 : C


대표적인 인메모리 기반의 Key/Value 스토어. Memcache 대비 value에 심플한 값뿐 아니라 문자열, 해시, 리스트, 세트 등보다 복잡한 형태의 데이터 정의와 처리가 가능. 단일 데이터형과 작은 사이즈의 경우에는 memcache가 성능이나 구현에 이점이 있으나, 처리할 데이터의 구조가 복잡해질 경우 Redis가 보다 유리하고 높은 성능을 보장


- Riak / 언어 : Elang, C


아마존의 Dynamo의 논문을 기반으로 구현된 K/V 스토어. Basho Tech에서 개발해 커뮤니티 버전과 기업형 버전을 함께 제공


- Voldemort / 언어 : ?


아마존의 Dynamo 논문을 기반으로 LinkedIn에서 개발하고 공개. 인메모리 캐싱을 스토리지 시스템과 결합해 memcache와 같은 별도의 캐싱티어를 둘 필요가 없음. 아파치 라이선스


- DynamoDB / 언어 : ?


최근 아마존이 클라우드 기반으로DynamoDB를 베타 버전으로 공개. 아마존 클라우드를 사용하고 있는 웹 서비스 업체들이 매우 관심 있게 보고 있고 활용을 계획하고 있음


4. Graph


- Neo4J / 언어 : C++, 자바


속성을 가진 노드와 관계 정보(즉, 그래프 또는 네트워크)를 저장∙처리하고 ACID 트랜잭션을 지원하는 데이터베이스. 그래프 데이터베이스는 시멘틱웹에서 곧잘 얘기하는 RDF 정보를 저장∙처리하는 데 최적이라 할 수 있음. 이를 위한 SparQL이라는 질의 도구를 제공. 커뮤니티 버전(GPL)과 기업형 버전(AGPL)이 있음. 한 대의 기계에서 수십억 노드와 관계 정보를 저장∙처리할 수 있으나 스케일아웃(scale out) 형태의 확장성을 갖추고 있지 않다. Neo4j에 대한Sharding에 대한 얘기도 있으나 아직 미구현 상태임


- AllegroGraph / 언어 : Lisp


Allegro Common Lisp으로 유명한 Franz에서 개발한 그래프 데이터베이스. 좀 더 정확히 말하면 AllegroGraph RDFStore. 

Franz의 시멘틱 솔루션 중 하나. 보다 일반적인 목적으로 데이터베이스를 확장하고 MongoDB와의 연동 등 여러 가지 기술적 시도를 하고 있고, IBM의 Xeon E7 플랫폼을 가진 싱글머신에 1조 개 이상의 RDF 데이터를 처리할 수 있도록 구현 


대략 이런정도가 있고, 저희 사무실에서 Redis를 사용합니다.

메모리에 가지고 있어서 전기가 나가버리면 큰일이 나기 때문에, 이것을 보완하는 방법도 있는데 그 부분은 더 공부해서 정리하도록 하겠습니다.


이중에 유명한것들 몇가지는 적당하게 해볼라고 합니다.


위의 종류는 다른 개발자분께서 올려주신 자료를 제가 다시 가져와서 사용한것입니다.


출처: http://firedev.tistory.com/category/NoSQL

'Database' 카테고리의 다른 글

MariaDB. 간단한 예제  (0) 2020.01.19
샤딩과 레플리카  (0) 2019.10.23
[Oracle] system 패스워드 분실시  (0) 2015.01.28
[Oracle]포트변경  (0) 2015.01.28
함수적 종속성  (0) 2014.06.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함