인메모리 데이터베이스

**인메모리 데이터베이스**(In-memory Database, IMDB), **메인 메모리 데이터베이스**(main memory database system, MMDB), **메모리 상주 데이터베이스**(memory resident database)는 데이터 스토리지의 메인 메모리에 설치되어 운영되는 방식의 데이터베이스 관리 시스템이다. 인메모리 데이터베이스는 디스크에 최적화된 데이터베이스보다 더 빠른데 그 까닭은 디스크 접근이 메모리 접근보다 느리기 때문이며, 이 데이터베이스는 내부 최적화 알고리즘이 더 단순하며 더 적은 CPU 명령을 실행한다. 메모리의 데이터에 접근하면 데이터를 조회할 때 검색 시간이 줄어들며 디스크보다 더 빠르고 더 예측 가능성 성능을 제공한다.accessdate=19 January 2013df= 인메모리 데이터 스토리지의 잠재적인 기술적 문제는 RAM의 휘발성이다. 구체적으로 말해 전원이 소실될 경우나 고의적인 상황 등에서 휘발성 RAM 안에 저장된 데이터는 손실된다.accessdate=March 10, 2017 비휘발성 RAM 기술의 도입으로 인메모리 데이터베이스는 전력 손실에도 완전한 속도로 데이터를 유지할 수 있게 되었다.Historically, RAM was not used as a persistent data store and therefore data loss in these instances was not an issue.Whole-system Persistence with Non-volatile Memories http://research.microsoft.com/apps/pubs/default.aspx?id=160853The Bleak Future of NAND Flash Memory http://research.microsoft.com/apps/pubs/default.aspx?id=162804
# ACID 지원
간단히 말해 메인 메모리 데이터베이스는 데이터를 휘발성 메모리 장치에 저장한다. 이 장치들은 장치가 전력을 소실하거나 리셋될 때 저장된 모든 정보를 소실한다. 이 경우 IMDB는 ACID(원자성, 일관성, 독립성, 지속성)의 속성 중 지속성(durability)의 지원이 부재함을 의미할 수 있다. 휘발성 메모리 기반 IMDB는 다른 3가지 속성, 즉 원자성, 일관성, 독립성은 대개 지원이 가능하다. 수많은 IMDB는 다음의 매커니즘을 통해 지속성 지원을 추가한다: * 스냅샷 파일 또는 체크포인트 이미지 * 트랜잭션 로그 * 비휘발성 DIMM(NVDIMM) * 비휘발성 메모리(NVRAM) * 자동 장애 극복 기능이 포함된 데이터베이스 레플리케이션에 의존하는 고가용성 구현체
# 주요 제품
{| class="wikitable sortable" |+ |- !제품명 !개발사 !라이선스 !비고 |- |DB2 with BLU acceleration |IBM |상용 |MPP(Massively Parallel Processors) Scale-out 지원 |- |PMA(Pure In-Memory Appliance) |IBM OEM(SYNEREX) |상용 |DB2 with BLU acceleration 탑재 어플라이언스(Linux,Windows,x86) |- |Kairos |REALTIMETECH |상용 |RDBMS(관계형 데이터모델), MO(공간데이터모델 및 이동객체 데이터모델 통합지원), Spatial(공간정보 융합서비스), Lite(Mobile DBMS) |- |ALTIBASE HDB |Altibase |상용, 커뮤니티 에디션 |SQL 관계형, 하이브리드 DBMS (On-Disk + In-Memory + Volatile-Memory) |- |SingleStore (구.MemSQL) |SingleStore, Inc. |상용 Free Trial (무기한) 제공 |ANSI SQL을 사용하는 관계형 DBMS. OLTP + OLAP 지원. In-Memory + Columnar 동시 사용. DB 사용 중에도 빠른 Scale-in / out 지원. Kafka / S3 / HDFS 등과 pipeline 연결 지원. Compute 와 Storage 분리 가능 (Object Storage를 저장소로 활용가능) JSON, TimeSeries, GeoSpatial 지원 |- |EXASolution |EXASOL |상용 |관계형(SQL, ODBC, JDBC, ADO.NET), 다차원(MDX, XMLA); EXASOL은 2008년부터 TPC-H 벤치마크 데이터량별 100GB, 300GB, 1TB, 3TB, 10TB 부문에서 상위권 |- |WebDNA 7 |WebDNA Software Corporation |프리웨어 | |- |Oracle Exalytics |오라클 |상용 |어플라이언스 |- |H2 (DBMS) |토마스 뮐러 |모질라 퍼블릭 라이선스 또는 이클립스 퍼블릭 라이선스 |자바용 |- |Oracle Coherence |오라클 |개발자 다운로드 가능 |자바용, 관계형, 분산형 |- |Hazelcast |Hazelcast Team |오픈소스 (아파치 라이선스 2.0) |자바용, NoSQL, 분산형 |- |SAP HANA |SAP AG |상용 | |- |Datablitz (전 Dali) |벨 연구소 (알카텔-루슨트) |상용 |Dali 프로토타입은 벨 연구소 내 수요를 위해 개발 |- |Polyhedra |ENEA AB (전 Perihelion Software) |상용, 무료버전(Polyhedra Lite) | |- |Kognitio Analytical Platform |Kognitio, Limited |상용 | |- |Ehcache |Terracotta, Inc. (Software AG) |오픈소스 (아파치 라이선스) |자바용, 분산형 |- |타임스텐 |오라클 |상용 |스탠드얼론 또는 오라클DB용 인메모리 캐쉬 |- |마이크로소프트 COM+ IMDB |마이크로소프트 |상용 |단종 |- |eXtremeDB |McObject LLC |상용 |다양한 버전 존재 |- |solidDB |IBM |상용 |관계형 |- |VoltDB |VoltDB Inc. |오픈소스 (GPL) / 상용 |관계형; H-Store 디자인 적용 |- |BigMemory |Terracotta, Inc. (Software AG) |무료 | |- |Xeround |Xeround Inc. |비매품, 서비스용 |클라우드 데이터베이스 |- |SQLFire |VMware |상용 |관계형, 분산형, NewSQL |- |ActiveSpaces |TIBCO Software |상용, 개발자 다운로드 |자바/.Net/C용, 분산형, 하이브리드, 이벤트사용, NewSQL |- |xPopcornStore |Nextwith |상용 |NoSQL, Graph, 분산형(Scale Out), 비휘발성 |- |마이크로소프트 SQL 서버 |마이크로소프트 |상용 | |- |UnQLite Embedded Database |Symisc Systems |BSD, SPL | |- |Goldilocks |선재소프트 |상용 |SQL, 관계형, Cluster. Scale-out 지원. TPC-C ,TPC-H 인증 |- |ARCUS (아커스) |잼투인 |오픈소스 (아파치 라이선스 2.0) |ARCUS는 memcached 기반의 인메모리 elastic 캐시 클러스터다. ARCUS는 컬렉션 구조 (List, Set, Map, B+tree) 데이터 유형을 지원하며 운영 중 노드를 추가 및 제거할 수 있다. |}