일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알림 인텐트
- 안드로이드 알림채널
- android notification 예제
- setPriority(NotificationCompat.PRIORITY_HIGH)
- 알림 우선순위
- Pending Intent
- setContentIntent
- notification channel
- 펜딩인텐트
- 안드로이드 알림
- setDefaults(NotificationCompat.DEFAULT_ALL)
- notifications
- notification manager
- 안드로이드 알림 예제
- 버전별 관리
- NotificationCompat.Builder
- Today
- Total
공부용 블로그
Altibase의 in-memory DB 사용시 데이터 안정성의 확보방법은? 본문
온 - 디스크 데이터베이스가있는 하이브리드 [ 편집 ]
메모리 내부의 데이터를 저장하면 성능상의 이점이 있지만 데이터 저장 방법은 값 비싼 방법입니다. 비용을 제한하면서 메모리 내 스토리지의 이점을 실현하는 접근법은 가장 자주 액세스하는 데이터를 메모리에 저장하고 나머지는 디스크에 저장하는 것입니다. 메모리에 저장해야하는 데이터와 디스크에 저장되어야하는 데이터를 구별하지 않으므로 일부 시스템에서는 데이터 사용에 따라 데이터가 저장된 위치를 동적으로 업데이트합니다. [10] 가장 자주 액세스하는 데이터가 메모리에 저장되는 것과는 대조적으로, 이 접근법은 가장 최근에 액세스 된 데이터가 캐시 되는 캐싱 과 약간 다릅니다 .
If avoiding disk I/O is the goal, why not achieve that through database caching?
Caching is the process whereby on-disk databases keep frequently-accessed records in memory, for faster access. However, caching only speeds up retrieval of information, or “database reads.” Any database write – that is, an update to a record or creation of a new record – must still be written through the cache, to disk. So, the performance benefit only applies to a subset of database tasks. In addition, managing the cache is itself a process that requires substantial memory and CPU resources, so even a “cache hit” underperforms an in-memory database.
=> 캐싱은 자주 접근이 필요한 데이터를 디스크에 접근하지 않고도 빨리 꺼내 쓸 수 있도록 메모리에 올려놓고 쓰는 것.
하지만 이것은 오직 읽기 작업에만 해당된다. 읽기만 수행하는 경우 캐싱이 성능 향상에 도움이 되지만
만약 쓰기나 업데이트가 필요한 경우 결국 디스크에 접근이 필요하다.
더구나 캐시 관리 자체가 메모리와 cpu를 사용하게 되는 하나의 추가적인 작업이 된다. (심지어 캐시 히트율이 낮더라도)
디스크 기반 데이터베이스에서 데이터 전송
1) 어플리케이션이 데이터베이스로부터 데이터를 요청한다.
2) 디비의 runtime은 파일시스템에게 디스크로부터 데이터를 찾아올 것을 지시한다.
3) 파일 시스템은 chche에 대한 데이터를 복사하고 다른 사본을 데이터베이스로 전달
4) 데이터베이스는 하나의 복사본을 캐시에 보관하고 다른 하나는 응용 프로그램에 전달
5) 응용 프로그램은 사본을 수정하고 데이터베이스 API를 통해 다시 데이터베이스로 전달
6) 데이터베이스가 수정 된 데이터 항목을 다시 데이터베이스 캐시에 복사
7) 데이터베이스에 사본은 결국 파일시스템 캐시에서 업데이트 된 파일시스템에 쓰여짐
8) 최종적으로 그 데이터는 물리적 디스크에 다시 쓰여짐
In contrast, an in-memory database system entails a single data transfer. Elimination of multiple data transfers streamlines processing. Removing multiple copies of data reduces memory consumption, and the simplified processing makes for greater reliability and minimizes CPU demands.
=> 인메모리 데이터베이스는 단일 전송을 수반. 여러번의 데이터 전송 과정을 제거하여 메모리 소비를 줄이고, 간단한 프로세싱으로 cpu 사용을 더욱 최소화 시킨다.
- 데이터베이스의 영속성을 제공하고 Commit된 트랜잭션에 대한 안정성 확보를 위해서 트랜잭션 처리시의 WAL (Write Ahead Logging) 로깅 방식을 사용하고 있으며, 로그파일 개수가 일정 개수이상 되거나 정해진 주기가 되면 메모리의 변경된 데이터 페이지를 디스크로 Write하는 체크 포인트를 통해 복구 시간을 최소화 시키고 있습니다.
- * WAL : 로그를 먼저 디스크에 저장하고 DB 페이지를 저장하는 절차. 디스크에 최종 트랜잭션 정보가 저장되어 있어 비정상종료시 트랜잭션로그를 통해 복구할수 있습니다.
- 백업 및 복구 지원
백업은 DBMS의 비정상 상황에 대비해서 논리적/물리적으로 데이터베이스의 사본을 생성합니다. 이러한 데이터베이스의 사본은 DB 운영 시에 온라인으로 생성이 가능하며, 복구 상황 시에는 백업 받은 데이터베이스 사본을 이용하여 완전복구 또는 불완전 복구를 수행하여 데이터베이스를 정상화시킬 수 있습니다.
체크포인트 발생시, $ALTIBASE_HOME/trc/altibase_sm.log 파일에 다음과 같이 로그가 남습니다. (altibase 4)
[2007/09/19 14:43:40] [Thread-3] [Level-9]
[CHECKPOINT-BEGIN]
[2007/09/19 14:43:41] [Thread-3] [Level-9]
[CHECKPOINT-END]
altibase3 의 경우, $ALTIBASE_HOME/trc/altibase_boot.log에 남습니다.
'설계 > RDBMS' 카테고리의 다른 글
RDBMS 벤치마크 결과 예상질문 (0) | 2019.01.07 |
---|---|
in-memory 기반 RDBMS의 구조와 장단점은? (0) | 2018.12.28 |
메모리 테이블스페이스 생성 (0) | 2018.12.26 |
디스크 테이블스페이스 생성 (0) | 2018.12.26 |
Altibase 메모리/디스크 테이블스페이스에 테이블 생성하기 (0) | 2018.12.26 |