NoSQL의 정의기존의 관계형데이터베이스(RDB) 관리 시스템과 구분되는 다른 형태의 데이터베이스를 통틀어 “NoSQL” 이라고합니다. Not Only SQL의 약어에서 알 수 있듯이 특정 아키텍처를 가진 DBMS를 지지하는 것이 아니라 RDB의 ‘관계형’ 특징을 제거하고 만들어진 다른 모든 DBMS를 말합니다. NoSQL의 특징– 고정된 테이블 스키마가 없고, – 테이블 간의 JOIN 관계도 없고, – 일반적으로 수평적인 확장성을 지원하며 – RDB에 비해 읽기/쓰기 성능이 뛰어납니다. – 예) BigTable, Cassandra NoSQL의 용도관계형데이터베이스는 작은 크기의 읽기/스기 트랜젝션이 빈번하게 발생하는 작업이나 쓰기 작업이 거의 없는 배치 형태의 작업 그리고 세밀하게 정규화된 테이블간의 조합을 통해 집계된 정보를 만들어 내는데에 적합한 반면 NoSQL은 읽기/쓰기 작업이 빈번한 경우에 적합한 데이터베이스입니다. 그래서 웹 환경과 같이 다양한 형태의 정보를 쉽게 검색하고 저장하는 경우에 사용합니다. CAP 이론과 NoSQL데이터 저장소는 CAP 중에서 2가지만 선택할 수 있다. 예를 들어 RDB는 CA에 특화되어 있기 때문에 분산 환경에 적용이 어렵다.NoSQL 제품은 CAP 중에서 C 또는 A를 일부 포기함으로써 분산 확장이 가능하다. 일반적으로 NoSQL 시스템은 관계형을 포기하거나 트랜잭션 구조를 느슨하게 함으로써 수평 확장이 가능하도록 한다. RDB 대안별 장단점 구분 특징 장점 단점 RDB cluster • Oracle RAC, MySQL cluster• 분산 확장과 안정성을 강화한 RDB 솔루션 • 최소한의 개발 비용으로 도입이 가능하다.• 비용 예측이 가능하다.• 상용화된 지원이 가능하다 • 확장 비용이 비싸고 적용 및 관리에 고급 기술이 필요하다.• 읽기 성능만 향상된다. Memory Cache • memcached, Coherence, Santa• RDB 앞단에 메모리 캐시를 두고 읽기 또는 읽기/쓰기를 캐싱한다. • 가격대비 효율성이 disk보다 훨씬 높다.• 읽기/쓰기 성능을 크게 향상시킬 수 있다.• 읽기/쓰기 수평 확장이 가능하다. • 메모리 비용이 비싸다.• 메모리 크기에 제약이 있다.• RDB를 저장소로 사용하지만 장애시 일부 데이터가 손실될 수 있다. NoSQL • 디스크 기반의 수평 확장이 뛰어난 데이터 저장소 • 읽기/쓰기 성능 및 확장성이 뛰어나다.• 일반 저가 장비를 사용할 수 있다. • Persistence Layer를 새로 개발해야 한다.• 사용화된 지원이 어려울 수 있다. 주요 특징 schema-free replication no relation / no join eventually consistency (not ACID) scalable / distributed NoSQL의 종류 Document store Graph Key/value store Column oriented MongoDB CouchDB Jackrabbit Lotus Notes AllegroGraph Neo4j HyperGraphDB FlockDB Cerebrum BigTable Memcachedb Redis Tokyo Cabinet Cassandra HBase Hypertable nosql 특징 비교 CouchDB MongoDB Cassandra HBase Written in Erlang C++ Java Java Main point DB consistency ease of use Retains some friendly properties of SQL. (Query, index) Best of BigTable and Dynamo Billions of rows X millions of columns License Apache AGPL (Drivers: Apache) Apache Apache Protocol HTTP/REST Custom, binary (BSON) Custom, binary (Thrift) HTTP/REST (also Thrift) Features – Document-oriented storage (JSON-style) – continuous or ad-hoc – User-defined query structured as map/reduce – Incremental index update mechanism – Document-oriented storage (JSON-style) – Full Index Support – Replication & High Availability – Auto-Sharding – Rich, document-based queries – Map/Reduce – Column-oriented Data Model – Scalability – Fault-Tolerant(no single point fo failure) – Writes are much faster than reads – Lockless – Map/reduce possible with Apache Hadoop – Column-oriented – Optimizations for real time queries – Map/reduce with Hadoop – Random access performance is like MySQL Best used For accumulating, occasionally changing data, on which pre-defined queries are to be run. Places where versioning is important. If you need dynamic queries. If you prefer to define indexes, not map/reduce functions. If you need good performance on a big DB. If you wanted CouchDB, but your data changes too much, filling up disks. When you write more than you read (logging). If every component of the system must be in Java. If you’re in love with BigTable. :) you need random, realtime read/write access to your Big Data. Example CRM, CMS systems. Master-master replication is an especially interesting feature, allowing easy multi-site deployments. For all things that you would do with MySQL or PostgreSQL, but having predefined columns really holds you back. Banking, financial industry (though not necessarily for financial transactions) Writes are faster than reads, so one natural niche is real time data analysis. Facebook Messaging Database (more general exam nosql 제품 선호도 비교 ScribeSyslog stopped scaling for Twitter after a while, so instead it uses Scribe, a log collection framework created and open-sourced by Facebook. Twitter has contributed some of its own patches to Scribe. Twitter uses Scribe to write logs to Hadoop. Scribe made it so easy for Twitter to log data, it started to log much more data. It now logs 80 different categories of data. HadoopTwitter needs to store more data per day than it can reliably write to a single hard drive, so it needs to store data on clusters. Twitter uses Cloudera’s Hadoop distribution to power its clusters.Weil says MySQL isn’t efficient at doing analytics at the scale Twitter needs. Instead, Twitter uses Hadoop and its own open-source project called FlockDB. Hadoop can run analytics and hit FlockDB in parallel to assemble social graph aggregates. Piga high-level language running on top of Hadoop. Yahoo created Pig for rapid Hadoop development HbaseHbase is built on top of Hadoop and is designed for low-latency and data mutability. Twitter uses it to power its people search. FlockDBFlockDB is a real-time, distributed database. As mentioned above, it was created and open-sourced by Twitter. The company uses it for social graph analysis. It’s still MySQL underneath, but it’s very fast. CassandraTwitter is still experimenting with its use of Cassandra, an open-source NoSQL database created by Facebook. Weil says Twitter is currently experimenting with using Cassandra for atomic counting. CouchDBCouchDB는 Erlang 언어로 만든 분산형 비 관계형 DB 입니다. 질의 방식이 쉬운 HTTP REST 형식으로 GET, UPDATE 등으로 문서에 저장하듯이 하고, 질의 시 JSON으로 결과를 받습니다. Incremental하게 데이터를 볼 수 있고 Replication도 쉽게 할 수 있도록 설계하고 있지요. Damien Katz가 2년동안 만들었고 최근 IBM에 의해 지원을 받고 있습니다. Apache 재단에 의해 인큐베이팅을 받아서 오픈 소스로 전향했습니다. HyperTableHyperTable은 Google BigTable을 오픈 소스로 구현한 것입니다. Hadoop 위에 구동되는 것으로 1TB를 9개 노드로 데이터를 빠르게 읽을 수 있습니다. LucidDBLucidDB는 위의 두 가지 DB와 마찬가지로 컬럼 기반 DB이고 압축을 사용해서 좀 더 빠르게 읽어 올 수 있습니다. MySQL MYISAM에 비해 속도가 뛰어나다는 벤치 마크 자료도 있군요. 발표 상세 정보 Drizzle이에 질세라 MySQL의 기술 담당자인 Brian Aker는 자사의 내부 프로젝트인 Drizzle을 공개했습니다. Drizzle은 MySQL 코드를 기반으로 해서 만든 가벼운 버전으로서최신 InnoDB 코드를 제공하고 GPLv2 라이센스로 Linux와 Mac 플랫폼을 지원 합니다. 웹 기반 서비스 패턴에 맞도록 개발 되고 대용량 동시 접속 및 멀티 CPU 구조에 맞도록 개발 할 예정이라고 합니다. 참고 Cassandra: http://gilja.tistory.com/7 http://www.readwriteweb.com/cloud/2011/01/how-twitter-uses-nosql.phphttp://www.slideshare.net/nkallen/q-con-3770885?from=ss_embedhttp://en.wikipedia.org/wiki/Nosql [출처] NoSQL|작성자 푸른피

NoSQL

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중