공부용 블로그

RDBMS 후보군 검토 중 이해안가는 부분 - ing 본문

설계/RDBMS

RDBMS 후보군 검토 중 이해안가는 부분 - ing

tomato212 2018. 11. 3. 02:08

Q. AltiBase DB의 라이센스 정책을 보고 있는데, 라이센스 종류에 따라 소켓서버의 제한이 있거나 디스크 DBMS 사용에 제한이 있다고 되어있다. 이해안가는 점은..


디스크 DBMS가 내 서버 컴퓨터에 속해 있는거 아닌가? altibase를 사용하는데 왜 내 컴퓨터 내부의 DBMS 사용이 제한되는거지? (그냥 라이센스에 따른 옵션 정책 모두가 다 이해안감..)

http://kr.altibase.com/faq/altibases-license-maintenance-model/




Q. in-memory DB는 데이터를 디스크에 저장하지 않고 메모리(RAM)에 저장한다고 했는데, RAM은 용량이 하드디스크에 비해 훨씬 작을텐데 어떻게 그 많은 양의 데이터를 저장한다는거지? 


=> 메모리에 데이터를 "모두" 저장한다는 것은 확실하지 않음. 메모리에 자주 사용하는 데이터만 올려놓고 쓸 수도 있다. 

인메모리와 디스크 방식을 합쳐놓은 방법도 있다. 


그리고 컴퓨터 끄면 RAM에 있는 데이터는 지워지는거 아닌가??


=> 기본적으로는 맞음. 이걸 보완하기 위한 방법이 나왔음. 예를 들어 ArtiBase DB



Q.  10 rdb특징이나 포함된 기능을 보고 개념이 먼지 이해. 서비스에 필요한 기능인지 생각. 필요하다면 선정 기준에 포함시키자. 

서비스에 맞는 스키마 구조 짜보기

조인문 필요한가?

필요하지 않다면 RDB 써야함?




DB 버퍼 캐시


데이터 블록을 읽어올때 디스크 I/O 작업은 시간이 걸리기 때문에 시간을 줄이기 위해

최근에 읽어온 데이터 블록에 대한 정보를 저장한다. 


Q. 블록이 아니라 블록에 대한 정보면 헤더정보만 저장해둔다는건가?


=> 블록자체가 한 단위이기때문에 헤더만 따로 저장하는 것이 아니라 헤더를 포함한 실제 데이터까지 저장하는 것 같음


http://jeong-pro.tistory.com/147?category=816292



Q. 그럼 저장은 어디까지 되고(버퍼캐시 용량은 어떻게 정해지지?), 언제까지 저장되어 있지?(시간지나면 자동삭제? 덮어쓰기?)


유한한 메모리 자원을 좀 더 효율적으로 사용해야 하므로 자주 액세스하는 블록들이 캐시에 더 오래 남아 있도록 LRU 알고리즘을 사용

http://wiki.gurubee.net/display/STUDY/Memory+vs+Disk+IO%2C.


=> LRU 알고리즘에 대해 알아보기


결국 디스크 I/O를 최소화하고, 대부분 처리를 메모리에서 할 수 있도록 버퍼 캐시 효율성을 높이는 것이 데이터베이스 성능을 좌우하는 열쇠

http://wiki.gurubee.net/display/STUDY/Memory+vs+Disk+IO%2C.


Q. 여기서 처리라는것은 쿼리문 처리? or 쿼리문을 읽은 후 데이터까지(메모리에 있는) 가져오는것까지 포함?


=> DB마다 다름. SQL문만 저장하는 경우도 있고 그에 해당하는 값까지 저장하는 경우도 있음





Q. RDBMS에서 지원되는 프로그래밍 언어는 필요한거지?

mysql 썼을때는 쿼리문빼고 직접 코드 짠게 없었기때문에 어떤 언어가 필요하지 않았는데

지원되는 언어가 있다는거면 직접 코드를 수도 있다는건가? 쿼리문이외에?


=> 웹서버와 데이터베이스를 연결해주기 위한 프로그램의 언어(혹은 웹서버의 언어가 될 수도 있음. 왜냐면 웹서버와 DB를 연결해야 하는데 웹서버가 자바스크립트로 코딩되어 있으면 DB에서 자바스크립트를 지원해야 연결할 수 있는것처럼..)


예를 들어, MySQL이 지원하는 프로그래밍 언어는 다음과 같다.


APIs and other access methods 

(데이터베이스에 접근할수 있는 방법, API)

Proprietary native API

ADO.NET
JDBC
ODBC

 Supported programming languages

(지원되는 프로그래밍 언어)

Ada

C
C#
C++
D
Delphi
Eiffel
Erlang
Haskell
Java
JavaScript (Node.js)
Objective-C
OCaml
Perl
PHP
Python
Ruby
Scheme
Tcl



* JDBC는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API




'설계 > RDBMS' 카테고리의 다른 글

페이지 알고리즘  (0) 2018.11.04
DataBase 아키텍처(오라클)  (0) 2018.11.04
DataBase가 생겨나게 된 배경  (0) 2018.11.03
RDBMS 개념 익히기  (0) 2018.10.31
mysql 연결 오류  (0) 2018.10.02