1. 데이터베이스 관련 예시
- 주변에서 데이터를 관리하는 사례
- 스마트폰 주소록, 메일 주소록, 은행이나 우체국의 예금통장, 명함 홀더, 사진 앨범, 음악 플레이어의 음악 데이터, 게임기나 온라인 게임의 데이 터, 온라인 달력, 거래처의 고객정보 등
- 데이터베이스가 사용될 것 같은 도구나 서비스의 예
- 은행이나 우체국의 예금관리, 쇼핑 사이트나 옥션 사이트, 항공기나 영화 등의 티켓 예약 서비스, iTunes Store, 메일 매거진, Dropbox나 SugarSync, EVENOTE 등의 온라인 저장소, Facebook이나 Instagram 등의 소셜 네트워크 서비스 등
- 데이터 유출 등의 사회적 사건의 예
- 2016년: 인터파크
- 1,000만 명 개인정보 유출
- 뱅크샐러드?
- 2021년: 트위치
- 서버 구성 오류로 인해 트위치의 중요 정보가 뚫린 이번 사건
- 원인 : 트위치 서버 설정 변경 후 악성 서드파티 공격이 이루어졌다고 설명했다.
(관련기사(유출 데이터 내역 등))
- 2022년: 페이스북
- 5억 명 이상의 페이스북 사용자의 개인 정보가 온라인에 게시된 데이터 유출
- 원인: 회사는 ‘악의적인 행위자’가 페이스북 프로필에서 데이터를 스크랩한 것으로 믿고 있다고 말했다.
(관련기사)
- 2016년: 인터파크
2.데이터베이스의 기본기능
1.데이터의 검색과 갱신
- 넓은 의미에서의 갱신: 등록, 수정, 제거
- 데이터 포맷에 유의: ex. 고유성(같아보여도 다른데이터라는 것을 알도록 관리해야함)
- 처리성능에 유의: 데이터양이 증가하고 있음에 따라 검색 성능을 향상시키는 것에 대한 고민필요
2. 동시성 제어
- 다수의 사용자가 동시에 파일을 열어 수정할 수 있는 것들에 대한 갱신의 무결성 정도
- 동시에 갱신을 시도했을 때의 동작 예시
(1) 최초로 파일을 연 사람이 파일을 열고 있을 때
그다음으로 파일을 열려고 한 사람은 파일을 열 수 없다.
(2) 최초로 파일을 연 사람이 파일을 열고 있을 때
그다음으로 파일을 열려고 한 사람에게는
파일이 ‘읽기 전용Read Only’으로밖에 열리지 않는다.
(3) 어떤 사람도 문제없이 파일을 여는 것이 가능하고 나중에 수행된 쪽의 갱신이 반영된다.
(더티쓰기(Dirty Write)) - 괴로운 트레이오프의 관계
- 데이터베이스를 복수의 사용자가 동시에 공유하고 이용하려고 한다면
같은 데이터를 갱신하는 상황대한 제어가 필요 - 트레이드오프 관계: 어느 사용자에게는 괜찮은 갱신 제어가 다른 사용자에게는 불편한 상황
- 데이터베이스를 복수의 사용자가 동시에 공유하고 이용하려고 한다면
✔️ 더티쓰기(Dirty Write) -남보다 늦게 손을 내밀어 이기는 가위바위보 같은 것 -데이터베이스에서 이런 식의 제어는 일반적으로 데이터 무결성 관점에서 기피하는 경향이 있음
3. 장애 대응
- 데이터 소실 사건 발생 :데이터베이스에 보존된 데이터가 어떤 원인으로 소실되고 또한 복원도 되지 않는 경우에 발생
- 데이터 소실 문제의 대책
- 데이터 다중화
- 데이터를 한 곳이 아니라, 복수의 장소에 분산해서 유지
- 데이터가 완전히 소실되는 것을 막는 방법
- 예방책
- ‘달걀을 한 바구니에 다 담지 마라’
- 백업
- 데이터 소실이 발생했을 때 데이터를 복원하는 방법
- 사후대책
- 데이터 다중화
- 왜 데이터 소실 사건이 끊이지 않는가
- 엔지니어가 항상 ‘서비스 레벨’과 ‘비용’이란 트레이드오프의 딜레마로 고민하기 때문
즉, 알고는 있지만 돈이 없는 상황이기 때문
- 엔지니어가 항상 ‘서비스 레벨’과 ‘비용’이란 트레이드오프의 딜레마로 고민하기 때문
4. 보안
- 데이터베이스가 사용자로부터 가능한 보이지 않게 설계되는 이유
- 사용자는 서버를 의식할 필요가 없다.
- 사용자에게 가까운 기술은 보통 대다수가 클라이언트 기술 중심(태블릿, 스마트폰 등)
- 서버에 배치된 데이터베이스 등의 소프트웨어를 직접 조작하는 일은 없기 때문
- 데이터베이스는 기밀성이 높다.
- 데이터베이스에 들어 있는 데이터는
기밀성이 지극히 높아서 일반에 공개할 수 없는 내용이 상당수 포함되어 있기 때문 - 시스템을 구축하는 측에서는
‘데이터베이스는 절대 사용자에게는 알려지지 않아야 한다’라는 강한 의지로 시스템을 구축
- 데이터베이스에 들어 있는 데이터는
- 사용자는 서버를 의식할 필요가 없다.
3. 데이터베이스의 종류
- 계층형 데이터베이스
- 현대적인 데이터베이스 역사상 최초로 등록된 것
- 상당히 오래되었지만, 아직 현역으로도 이용
- 관계형 데이터베이스
- 2차원 표 형식
- 현재 가장 주류
- 객체지향 데이터베이스와 XML 데이터베이스
- 각각 ‘객체’와 ‘XML’이라는 형식으로 데이터를 관리하는 데이터베이스
- 관계형 데이터베이스를 대체하기를 기대했지만,
아직 관계형 데이터베이스의 아성을 무너뜨리지는 못하였고
틈새시장에서 기반을 쌓고 있는 정도
- NoSQL 데이터베이스(Not only SQL)
- 관계형 데이터베이스에 있는 기능 일부를 버려서 성능(처리 속도)을 높이고 있음
- 대량의 데이터를 고속으로 처리해야 하는 웹 서비스와 잘 맞아서 최근 자주 이용
(참고자료)
- 데이터베이스 첫걸음
공부한 내용을 여러글과 책 읽은 내용을 바탕으로 정리하고 있습니다.
좋은 글로 저의 공부에 도움을 주시는 분들께 감사드립니다.