1.1 강의 구성 원칙

당신과 나는 아래에서 데이터베이스와 친분을 쌓기 시작했습니다 . 이것은 사람들을 가르치는 개인적인 접근 방식의 특징입니다. 새로운 주제에 대해 이야기할 때 항상 특정 도구를 실제로 사용하는 방법을 먼저 알려줍니다. 그리고 이미 사람이 그것을 사용하는 방법을 알고 있다는 것을 알았을 때 나는 모든 것이 어떻게 작동하는지 말하기 시작합니다.

이 접근법에는 여러 가지 이유가 있지만 주된 이유는 학습 과정에서 가장 가치 있고 가장 부족한 자원이 학생의 동기라는 것입니다 .

이 접근 방식은 우리가 학교와 대학에서 사용하는 익숙한 방식과 약간 다릅니다. 그러나 모든 것이 분명합니다. 학교나 대학에서 공부할 때 올바른 우선 순위가 있습니다. 공부는 현재 인생에서 가장 중요한 것입니다.

성인기에 독학에 종사하는 경우 이미 공부를 일, 집안일, 어린이 또는 연로 한 부모 돌보기와 결합해야합니다. 그리고 여기서 종종 공부가 최우선 순위가 아닙니다.

우선 순위에 관한 것입니다. 스타트업 세계에도 이런 개념이 있다. Fail Fast, 최대한 빨리 실패 . 이상하게 들리지만 실제로는 많은 의미가 있습니다. 신생 기업의 임무는 그의 가설이 올바른지 빠르게 확인하는 것입니다. 그리고 그것이 사실이 아니라면 당신은 그것에 당신의 인생을 보낼 필요가 없습니다. 특정 서비스 나 제품에 대한 수요가 없다는 것을 가능한 한 빨리 이해하는 것이 좋습니다.

Java와 SQL을 가르칠 때도 동일한 접근 방식을 사용합니다. 프로그래밍을 서두르고 있는지 여부를 가능한 한 빨리 이해할 수 있는 기회를 제공합니다 . 프로그래밍을 좋아하고 루프 및 배열로 작업하는 방법을 스스로 알아낼 수 있었다면 멘토와 잘 설계된 프로그램의 도움을 받아 학업을 마치고 일자리를 찾을 수 있는 모든 기회가 주어집니다.

그러나 또 다른 사실은 그다지 중요하지 않습니다. 며칠 쉬면 프로그래밍이 당신을위한 것이 아니라는 것을 이해할 수 있습니다. 관심이 없을 수도 있지만 괜찮습니다 . 그래서, 당신은 그것에 당신의 삶의 몇 달을 보낼 필요가 없습니다.

졸업생의 40%만이 대학에서 받은 전문 분야에서 일합니다. 사람들은 5-6년 동안 공부했고 그들 중 60%는 자신의 전문 분야에서 일하지 않기로 결정했습니다. 예, 얻은 지식 중 일부는 여전히 사용되지만 절반 정도는 사용되지 않습니다.

이것은 Fail Fast 개념의 가치입니다. 특정 직업, 특정 사람 또는 특정 취미가 귀하에게 적합하지 않다는 것을 가능한 한 빨리 이해하는 것입니다. 그리고 그들에게 시간과 에너지를 낭비하지 마십시오. 장기적으로 이것은 매우 좋은 전략입니다.

1.2 SQL과 모두, 모두, 모두

우리는 철학적 소개를 마쳤습니다. SQL 학습으로 돌아가겠습니다.

SQL 언어와 DBMS는 약간 다릅니다. SQL 언어 자체는 데이터베이스에 대한 SQL 쿼리로 작성할 수 있는 내용을 설명하는 일종의 표준입니다. DBMS는 이미 이 표준을 구현하고 있습니다. 일부 DBMS는 표준의 일부 기능, 두 번째 기능 등을 구현합니다.

DBMS가 비쌀수록 구현하는 표준의 기능이 많아집니다. 또한 많은 DBMS는 종종 SQL 표준 이외의 고유한 기능을 구현합니다. 때때로 이로 인해 이식성 문제가 발생합니다. 한 DBMS용으로 작성된 SQL 쿼리가 다른 DBMS용으로 제대로 작동하지 않을 수 있습니다.

Java도 비슷한 상황입니다. Java 프로그램이 Windows에서 작성되면 Linux에서 정상적으로 작동하지 않습니다. 이 문제를 해결하기 위해 Java는 운영 체제마다 다르게 구현되는 특수 클래스를 도입합니다. 예: WindowsPath, LinuxPath 등의 구현이 있는 경로 클래스

문제의 두 번째 부분은 버전 관리를 통해 해결됩니다. 다른 언어 또는 DBMS의 모든 성공적인 혁신이 새로운 JDK 또는 SQL 표준에 추가됩니다. JDK에는 다양한 버전이 있고 최신 버전일수록 더 많은 기능이 있다는 것을 이미 알고 있습니다. SQL도 마찬가지입니다.

SQL 언어에는 연도별로 이름이 지정된 여러 버전의 표준이 있습니다.

  • SQL:1999
  • SQL:2003
  • SQL:2006
  • SQL:2011
  • SQL:2016
  • SQL:2019

좋은 소식 : 우리는 이러한 표준을 연구하지 않을 것입니다. 첫째, 이 모든 것을 연구하고 숙달하는 데 몇 년이 걸릴 것입니다. 둘째, 이러한 표준은 Android 버전과 같습니다. 출시 후 불과 5~10년이 지나면 표준이 광범위하게 확산됩니다.

많은 양의 데이터가 있는 데이터베이스에서 사람들은 신뢰성과 안정성이 필요합니다. "작동합니다. 만지지 마십시오."는 데이터베이스 작업을 하는 모든 사람의 모토입니다. 그리고 새 버전의 데이터베이스로의 전환은 그러한 솔루션의 모든 이점이 이미 분명한 5년마다 이루어집니다.

1.3 괄호 너머

위에서 말했듯이 데이터베이스 전문가가 되려면 몇 년이 걸립니다. 전문가는 우리가 공부하지 않을 많은 것을 알고 있습니다. 그러나 데이터베이스에 있는 다른 항목에 대해 조금 이야기하겠습니다.

거의 모든 최신 데이터베이스는 다음을 지원합니다.

1 절차적 언어(PL)

RDBMS는 SQL Server에서 실행되는 프로시저 및 함수를 작성하는 기능을 지원하며 쿼리 중에 데이터로 많은 작업을 수행할 수 있습니다. 예를 들어, Oracle 서버에 PL SQL 쿼리를 작성하면 쿼리에 대한 응답으로 데이터가 포함된 HTML 페이지가 생성됩니다. 그래 넌 할수있어.

2 이벤트(트리거)

모든 최신 DBMS는 SQL 언어에서 트리거라고 하는 이벤트 메커니즘을 지원합니다. 트리거는 일부 작업에 대한 응답으로 발생합니다. 예를 들어, 데이터베이스에 쓰기를 시도하는 모든 시도를 차단하고 정확한 변경 시간을 새 줄에 추가할 수 있습니다.

3 로깅

최신 데이터베이스는 매우 빠르기 때문에 모든 변경 사항(새 행, 삭제된 행, 변경된 행)은 먼저 로그라는 특수 파일에 기록됩니다. 그리고 얼마 후 SQL 서버는 이러한 레코드를 기본 데이터베이스와 병합합니다.

어떤 면에서 이는 Java의 가비지 수집기 동작과 유사합니다. 또한 처음에는 개체를 삭제된 것으로 표시하고 유휴 시간 동안 메모리 정리 및 최적화를 수행합니다.

4 플러그인

많은 프로그램뿐만 아니라 DBMS에도 자신만의 플러그인을 작성할 수 있습니다. 이러한 플러그인을 사용하면 고유한 데이터 유형, 작업 기능을 추가하거나 DBMS의 표준 동작을 변경할 수 있습니다. 이는 오픈 소스 데이터베이스로 작업하고 일부 버그가 있을 때 특히 유용합니다.

5 분산 작업(클러스터)

최신 SQL 서버의 일반적인 시나리오는 여러 서버의 클러스터입니다. 가장 간단한 옵션은 데이터를 하나의 서버에 쓰고 서버 그룹에서 읽는 것입니다. 이 경우 SQL 서버 간의 데이터베이스 동기화에 대한 다양한 시나리오를 구성할 수 있습니다.

6 샤딩

데이터가 많으면 서로 다른 데이터베이스로 분할되기 시작합니다. 하나의 테이블이 다른 데이터베이스의 일부로 저장될 수 있다는 사실까지.

샤딩은 수직 및 수평이 될 수 있습니다. 수직 샤딩은 테이블을 그대로 수직선으로 자르고 수평 샤딩은 수평으로 절단하는 것을 의미합니다.

예를 들어 테이블의 모든 데이터를 연도별로 나누기로 결정했습니다. 이것은 수평 샤딩이 될 것입니다.

7 밀지 않는 것을 밀다

데이터베이스 개발의 특정 단계에서 점점 더 많은 비즈니스 로직이 추가되기 시작했습니다. 이 모든 것은 프로시저, 함수, 서버에 의한 웹 페이지 생성으로 시작하여 Python, JavaScript, 심지어 Java 및 C++와 같은 거의 모든 인기 언어에 대한 지원을 DBMS에 추가하는 것으로 끝났습니다.

세부 사항에 들어가기 전까지는 멋진 것 같습니다. JDK, Java 라이브러리, 프레임워크, 작은 메모리 및 많은 메모리가 없는 SQL 서버 내에서 실행될 Java로 웹 애플리케이션 비즈니스 로직을 작성하고 싶습니까? 다른 제한?