데이터베이스

From 백괴사전
Jump to: navigation, search

“이 글도 데이터베이스에 들어가겠죠?”

데이터베이스 관리자

알 게 뭐야.”

백괴사전 두부센터(대부분 두부는 여기에서 만들어진다고 한다.)
실제 데이터베이스 구조. 참고로 매우 잘 정리된 데이터베이스의 모습이다?. 데이터베이스 관리하는 진짜 인간은 없고, DBA는 외계인이거나 로봇임을 알 수 있다.

데이터베이스(영어: Database, 왜말: ダタバセ), DB 혹은 두부며느리가 가지고 있는 방대한 양의 정보의 집합으로, 현재는 일반인도 컴퓨터에서 어렵지 않게 쓸 수 있다. 흔히 껐다 켜가 가장 잘 먹히는 존재 중 하나로 알려져있다.

특성[edit]

며느리의 정의에 의하면 데이터베이스는 다음과 같은 특성을 지닌다.

  1. 누구아무 때에 접근할 수 있어야 한다. 즉 땡전 뉴스같이 특정 시간에만 접속할 수 있는 백괴스러운 방식은 안 된다.
  2. 자료를 삽입하거나, 삭제하거나, 수정할 때 데이터가 계속 바뀌어야 한다. 즉 읍니다와 같은 정보를 계속 보여주면 그것은 데이터베이스가 아니다. 물론 캐싱 때문일수도...
  3. 여러 명이 한꺼번에 해당 데이터베이스에 접근해도 죽지 말아야 한다. 물론 똥컴은 몇 명만 와도 죽어나지만, 어쨌든 둘 이상 접근 가능하면 된다.
  4. 데이터베이스의 주소를 입력하는 것이 아니라 데이터 값을 입력하면 바로 검색해야 한다. 따라서 테이블 주소 따위는 없다.

이들 중 하나라도 만족하지 않으면 데이터베이스라 부르지 않으며 설령 불린다 하더라도 며느리가 공식으로 인정해주지 않는다.

중복성으로 인한 문제[edit]

또한 데이터베이스는 중복을 최소화해야 하는데, 이를 어기면 비슷한 데이터가 무한히 양산되는 사태가 벌어지며 며느리는 이것을 매우 싫어한다. 이는 며느리뿐만 아니라 데이터베이스 관리자에게도 큰 문제다.

  1. 쓸데없는 자료를 저장할 공간을 사게 되므로 이 낭비된다.
  2. 보안을 최대한 유지한답시고 철통 방어를 해놓았는데 허무하게도 보안이 뚫린 저쪽 데이터베이스가 같은 정보를 가지고 있어서 다 털려버린다.
  3. 똑같은 자료인데 값이 다를 수 있다. 예를 들어 가 은행에 2000원을 넣어 5000원이 되었는데 다른 데이터베이스에서는 3000원을 소유하고 있다고 나올 수 있다.

이외에도 여러 문제가 있으며, 덕분에 데이터베이스 관리 소프트웨어(DBMS)와 데이터베이스 관리자(DBA)는 이 문제로 골머리를 앓고 있다. 며느리는 정말 대단한 존재였어...

트랜잭션[edit]

데이터베이스의 상호작용 단위로, 각 트랜잭션에 대해 다음과 특성을 가진다.

  1. 원자성(Atomicity)
  2. 일관성(Consistency)
  3. 고립성(Isolation)
  4. 지속성(Durability)

이 특성을 다 합친 것을 ACID라 하는데, 꼭 산토끼가 연상되게 하는 이름이다. 그러나 성능 향상을 위해 꼭 산토끼가 되지 않아도 ACID를 지키지 않아도 된다.

정규화[edit]

데이터베이스는 중복을 하지 않으려고 해도 워낙 자료가 방대하면 잘못하여 중복이 일어나는 사태가 발생할 수 있다. 중복이 일어나면 위에서 말한 것과 같이 모순이 발생하기 딱 좋다. 이를 막기 위해 며느리의 부하로 있으며, 데이터베이스에 큰 공헌을 한 것으로 유명한 애드거 F. 커드라는 사람이 데이터베이스 정규화를 하기 시작하였으며 마침내 그는 제 1 정규형과 제 2 정규형을 만들어냈다. 이외에도 다양한 정규형이 있지만 알 게 뭐야.

정규화를 하면 모순 해결은 물론 질문에 제대로 대답하지 않는 문제가 해결되고, 쓸데없는 삽질을 최소화하며?, 테이블을 더 보기 좋게? 만든다.

[edit]

키는 데이터베이스에서 해당 자료의 기준이 될 수 있는 것으로, 그 어떤 값과도 중복되지 않아 그것만으로 식별이 가능해야 한다. 이 조건을 만족하는 것들을 후부키후보키라 부르는데, 후보키 중 하나가 기본키가 된다. 기본키는 진짜 대표다. 그러나 상당수의 경우 기본키로 뽑힐 만한 인재후보가 없어 일련 번호와 같이 식별자를 따로 만들어 기본키로 지정한다.

SQL[edit]

초기에 며느리가 데이터베이스를 처음으로 인간 세계에 선사하였을 때만 해도 데이터베이스는 복잡한 수식으로 나타내어야만 쓸 수 있었으며 일반인은 사용할 엄두도 내지 못하였다. 그러자 외계인 고문의 대가로 알려진 IBM에서 며느리에게 간청하여 보다 인간 세계에 가까운? 언어를 만들었는데 이것이 바로 SQL이다. 현재는 기본 SQL에 약간의 떡칠을 해서 나오는데, 이들 중 가장 많이 쓰는 SQL문이 MySQL이다. SQL이 프로그래밍 언어인지에 대해서는 며느리도 답하지 않고 있다.

SQL의 어원은 다람쥐(SQuirreL)로 추정된다람쥐. 그러나 언어가 지나가던 XML도 비웃을 만큼 하도 병맛같아서 현재 공식적인 이름은 삐–Sucking Quality Language의 약자가 되었다람쥐.

종류[edit]

MySQL[edit]

가장 흔히 쓰이고 있는 SQL로, 모든 SQL은 내 것이라는 의미다. 선 마이크로시스템즈에서 이 MySQL을 샀으나 현재는 그 회사마저 오라클로 넘어가 오라클 것이 되었다. 즉 MySQL에 있는 모든 데이터베이스는 오라클 것이다. 그런데 오라클도 자체 데이터베이스가 있다. 보통 APM이라 하여, 아파치PHP와 섞어 쓰는 경우가 매우 많으며 웬만한 미디어위키 사이트와 오픈소스 게시판도 이렇게 구성되어있는 경우가 많다. 미투데이에서 가끔 데이터베이스 오류가 날 때도 MySQL 오류라는 것이 대놓고 나오기도 한다.

MySQL의 개념은 마이크로소프트의 내 컴퓨터와도 매우 유사하여, 오라클이 MySQL을 내 것이라 주장하며 MySQL의 소스도 내 것이라 칭하였고 따라서 소스를 공개하지 않는 것이 타당하다고 여겨 새 버전의 MySQL에서는 소스를 공개하지 않았다. 이에 사람들은 오픈 소스를 말아먹는 오라클을 열심히 까고 있다.

MariaDB[edit]

MariaDB 또는 말이야DB는 MySQL의 복제형으로, 오라클에서 도망쳤을 뿐이지 사실상 MySQL이나 다름이 없다. 언제 오라클이 고소미를 먹일지 알 수 없어서 불안해하는 사람들이 선택했으며, 현재 위키뷁과가 쓰고 있다. 그러나 MariaDB는 가끔 자신의 이름을 잊고 "내가 MySQL인데 말이야" 같은 소리를 지껄이곤 한다. 분명히 이름은 말이야DB인데 명령어는 mysql인 경우가 그 예시다.

SQLite[edit]

웹보다는 리눅스 내부에서 주로 쓰이고 있는 것으로, SQLite만 날려도 리눅스가 먹통이 되기 딱 좋다. 리눅스 내에 있는 파이어폭스에서 이 데이터베이스를 쓰고 있다. SQLite는 MySQL과는 달리 데이터베이스를 해당 디렉터리에 저장해놓으며 텍스트 파일로 열면 깨진 글자와 함께 데이터베이스 내용이 대놓고 드러난다. 또한 SQLite는 점 라이트라고도 불리는데, 이 데이터베이스는 SQL 쿼리문 앞에 점을 반드시 붙여야 하기 때문이다. 주로 웹보다 프로그램과 같이 쓰기 좋으며 헤더만 있다면 심지어 C언어하고도 어렵지 않게 연동할 수 있다. 윤희 황제가 특히 좋아하는 데이터베이스로, 현재 안드로메다에서 공식으로 사용하는 데이터베이스며 덕분에 dksemfhdlem에서도 쓰이고 있다.

Oracle DB[edit]

오라클에서 만든 데이터베이스로, 주로 거대 데이터베이스에 사용한다. 유일하게 질량값이 버전에만 비례하는 데이터베이스로, 단위는 그램(g)이다. 오라클이 이 데이터베이스를 많이 쓰게 만들기 위해 서비스는 제대로 안 해주고 존나 많이 팔아먹을 궁리를 해서 데이터베이스를 관리하는 사람들은 오라클 데이터베이스에 대한 정보를 많이 공유하게 되었고 결과적으로 거대해져 현재에 이르렀다. 즉 이 데이터베이스는 오라클스러움을 가장 잘 보여주는 제품이다. 현재 오라클 피부과를 차려 오라클의 DBMS를 피부 치료 프로그램에 이식하였으며, 이 피부과는 고객의 세션과 트랜잭션까지 관리해주어 유명해졌다.참고로 오라클을 가격이 비싸기 때문에 같은 닝겐이나 이명박같은 회사는 쓸수가 없다 카더라.

NoSQL[edit]

자기 자신이 SQL이 아니라고 하는 SQL로, noname.txt급의 가치가 있다. 현존하는 데이터베이스 중 유일하게 며느리도 몰라서, 데이터베이스가 아니라는 주징이 유력하다. 당연히 내용은 다음과 같다.

Tumbleweed01.gif

이외에도 실험용으로 쓰이기 위해 나온 PostgreSQL, 몽골산 바이러스로 Node.js와 궁합이 좋은 MongoDB, 마이크로소프트에서 윈도로 세계 정복을 하기 위해 만든 MSSQL 등이 있다.

연동 방법[edit]

현재는 데이터베이스 연동이 필요할 시 데이터베이스를 사용하기 좋은 라이브러리를 제공해주기 때문에 그것을 그냥 잘 쓸 줄 알기만 하면 된다. 일반적인 프로그램의 경우 헤더를 잘 소환하면 된다. 웹에서는 php, jsp, asp를 이용해 연동하기도 하는데, php는 MySQL을 편애하고 jsp는 오라클 데이터베이스를 편애한다 카더라.

데이터베이스 오류[edit]

백괴사전이 데이터베이스에 접근하지 못할 시 나오는 오류. 현재는 '이 위키에 문제가 있습니다'로 대체되었다.

데이터베이스에 제대로 접근하지 못하거나 데이터베이스상의 자료가 모두 날아가면 오류가 발생한다. 백괴사전의 경우 이미 이와 관련된 오류가 몇 번 일어나기도 했으며, 2012년에는 데이터베이스 오류가 랜덤하게 일어나는 만우절 이벤트를 진행했는데 이것에 낚인 사람도 있지만 임팩트가 약하다는 의견이 많았다. 물론 백괴사전 이외의 사이트에도 데이터베이스 오류가 일어날 수 있으며, 해당 데이터베이스 관리자는 패닉에 빠지게 될 것이다.

용도[edit]

주로 컴퓨터에서 다양하게 쓰이며 위키, 이글루스샨새교와 같은 블로그, 각종 커뮤니티 게시판, 회원 관리 등 곳곳에 매우 자주 쓰인다. 온라인 게임에서도 데이터베이스가 없는 경우는 매우 찾기 힘들며 복잡한 온라인 게임은 모두 데이터베이스를 가지고 있는데, 이라는 게임의 데이터베이스는 며느리의 소유다.

트리비아[edit]

  • 게임 데이터베이스 관리자는 방대한 자료를 체계적으로 관리하기 때문에 게임 기획자보다 밸런싱을 잘 맞춘다. 실제로 게임 밸런싱을 데이터베이스 관리자가 하는 경우도 있었다.
  • 모든 데이터베이스는 색인 이전에 우선 며느리의 손을 거치며, 일부 자주 찾는 자료는 며느리에게 캐싱(caching)되어 보다 빠르게 데이터를 찾을 수도 있다.
  • 며느리는 데이터베이스의 중개자 역할만 한다. 즉, 데이터베이스에는 가끔 며느리도 모르는 정보가 저장되기도 한다.
  • Google Trends에 의하면 MySQL과 Oracle DB의 사용은 줄어드는데, SQLite는 저 밑바닥에서 조금씩 상승하고 있다.
  • 애드거 F. 커드는 현재 잘만 쓰고 있는 SQL이 문제 투성이라고 생각했다.
  • 래리 앨리슨이 클라우드 따위 환상이라고 말하다 망신당한 뒤, 사람들은 오라클 DBMS의 무게가 11g도 안되는 구름 12개 정도로(12c) 줄어들 것이라 생각하고 있다.
  • 데이터베이스는 사실 컴퓨터가 먹을 수 있는 두부일 뿐이다.
  • 두부를 먹기 싫어하는 사람들은 데이터베이스 대신 텍스트 기반으로 내용을 저장하는 것을 선호하고 있다.