오늘은 데이터베이스Database, DB
에 대해 다루겠습니당!
데이터베이스는 안에 데이터들을 저장
한다는 건 많이들 들어봤습니당. 그럼 쓰는 이유에 대해 자세히 알아보졉.
데이터베이스가 존재하기 전에는 파일 시스템을 사용해서 데이터를 관리했었습니당(지금도 쓰는데가 있다고 해용).
이러면 데이터를 각 파일 단위로 저장해서 업무를 처리하기 위한 애플리케이션Application
과 상호 연동이 되야 하는뎅, 문제는 이렇게 파일 시스템으로 저장하면 종속성
문제라던가 데이터 무결성
문제가 발생해용.
간단하게 말하자면 파일 시스템마다 따로 관리하는데 어떤건 데이터 간에 관련이 있어 상호 연동이 되야하거나, 이 데이터는 유니크해야 하는데, 파일 시스템으로 관리하기엔 한계가 있죵.
데이터베이스는 이런 데이터 관련 문제를 해결해줘용! 이는 데이터베이스의 특징으로 자리 잡았습니당!
데이터베이스 크기를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가해도 관련 애플리케이션을 수정할 필요가 없습니다!
데이터베이스는 논리적인 구조로 다양한 애플리케이션의 논리적 요구를 만족시켜줍니당!
데이터는 여러 경로를 통해서 들어옵니당. 이때 경로가 다양하다보니 잘못된 데이터가 들어올 수도 있어용.
데이터베이스는 데이터에서 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성
을 검사해서 데이터의 무결성을 구현합니당.
인가된 사용자들만 데이터베이스나 데이터베이스 내에 자원을 접근할 수 있도록 계정 관리 또는 접근 권한을 설정할 수 있어용!
이를 통해 모든 데이터에 보안을 구현할 수 있습니당! 요즘처럼 데이터가 생명인 시대엔 가장 중요한 특징이죵
연관된 정보를 논리적인 구조로 관리해서, 어떤 하나의 데이터만 변경했을 경우에 발생할 수 있는 불일치성
을 배제할 수가 있습니당.
이뿐만 아니라, 작업 중에 일부 데이터만 변경되서 나머지 데이터와 일치하지 않는 경우를 방지합니당!
데이터베이스는 데이터를 통합해서 관리함으로써, 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성
문제를 최소화할 수 있습니당.
데이터베이스의 성능 이슈는 디스크 I/O를 어떻게 줄이느냐에서 시작됩니당.
디스크 I/O
는 디스크 드라이브의 플래터원판
을 돌려서 읽어야할 데이터가 저장된 위치로 디스크 헤더를 이동하고 데이터를 읽는 것을 의미해용
이 때, 데이터를 읽는데 걸리는 시간은 디스크 헤더를 움직여서 읽고 쓸 위치로 옮기는 단계에서 결정됩니당. 즉, 디스크의 성능은 디스크 헤더의 위치 이동 없이 얼마나 많은 데이터를 한번에 기록하느냐에 따라 결정된다고 보시면 됩니당.
그래서 순차적으로 I/O를 수행하는게 랜덤 I/O보다 빠를 수 밖에 없어용. 근데 실제로 대부분 I/O 작업이 랜덤 I/O
에용... 이걸 순차 I/O
로 바꿀 수 없을까에서부터 시작되는 데이터베이스 쿼리 튜닝은 랜덤 I/O 자체를 줄여주는 것이 목적이라 보시면 됩니당.