1.1 Nguyên tắc xây dựng bài giảng

Bạn và tôi bắt đầu làm quen với cơ sở dữ liệu từ bên dưới . Đây là một đặc điểm trong cách tiếp cận cá nhân của tôi để dạy mọi người. Khi nói về các chủ đề mới, trước tiên tôi luôn cho bạn biết cách sử dụng một số công cụ nhất định trong thực tế. Và khi tôi biết rằng một người biết cách sử dụng chúng, tôi bắt đầu kể mọi thứ hoạt động như thế nào.

Có một số lý do cho cách tiếp cận này, nhưng lý do chính là nguồn tài nguyên quý giá nhất và còn thiếu nhất trong quá trình học tập là động lực của học sinh .

Cách tiếp cận này hơi khác so với cách chúng ta quen dùng, được sử dụng trong các trường phổ thông và đại học. Nhưng mọi thứ đều rõ ràng: khi bạn học ở trường phổ thông hoặc đại học, bạn có những ưu tiên đúng đắn: học tập là điều quan trọng nhất trong cuộc sống vào lúc này.

Nếu bạn tham gia vào việc tự học ở tuổi trưởng thành, thì bạn thường phải kết hợp việc học của mình với công việc, công việc gia đình, chăm sóc con cái hoặc cha mẹ già. Và ở đây thường việc học sẽ không được ưu tiên hàng đầu.

Đó là tất cả về các ưu tiên. Thậm chí có một khái niệm như vậy trong thế giới khởi nghiệp - Thất bại nhanh, thất bại càng nhanh càng tốt . Nghe có vẻ lạ, nhưng thực tế lại rất có lý: nhiệm vụ của một startup là nhanh chóng kiểm tra xem giả thuyết của mình có đúng hay không. Và nếu điều đó không đúng, thì bạn không cần phải dành nhiều năm cuộc đời cho nó, tốt hơn hết là bạn nên hiểu càng sớm càng tốt rằng không có nhu cầu đối với một dịch vụ hoặc sản phẩm nhất định.

Khi dạy Java và SQL, tôi sử dụng phương pháp tương tự: Tôi cho bạn cơ hội để hiểu càng sớm càng tốt liệu bạn có đang vội vã từ bỏ lập trình hay không . Nếu bạn thích lập trình và bản thân bạn đã có thể tìm ra cách làm việc với các vòng lặp và mảng, thì với sự trợ giúp của những người cố vấn và một chương trình được thiết kế tốt, bạn có mọi cơ hội để hoàn thành việc học và tìm được việc làm.

Nhưng một thực tế khác không kém phần quan trọng: trong một vài ngày nghỉ, bạn có thể hiểu rằng lập trình không dành cho bạn. Bạn có thể không quan tâm đến nó, và điều đó không sao cả . Vì vậy, bạn không cần phải dành hàng tháng trời cho nó.

Chỉ 40% sinh viên tốt nghiệp làm việc trong chuyên ngành mà họ nhận được tại trường đại học. Hãy nghĩ về điều đó, mọi người đã học trong 5-6 năm và 60% trong số họ quyết định không làm việc trong chuyên ngành của họ. Vâng, một số kiến ​​thức thu được vẫn được sử dụng, nhưng khoảng một nửa trong số đó thì không.

Đây là giá trị của khái niệm Thất bại nhanh - để hiểu càng sớm càng tốt rằng một nghề nhất định, một người nhất định hoặc một sở thích nhất định không phù hợp với bạn. Và đừng lãng phí thời gian và năng lượng của bạn vào chúng. Về lâu dài, đây là một chiến lược rất tốt.

1.2 SQL và tất cả, tất cả, tất cả

Chúng ta đã hoàn thành phần giới thiệu triết học, hãy quay lại học SQL.

Ngôn ngữ SQL và DBMS là những thứ hơi khác nhau. Bản thân ngôn ngữ SQL là một loại tiêu chuẩn mô tả những gì có thể được viết trong các truy vấn SQL tới cơ sở dữ liệu. DBMS đã triển khai tiêu chuẩn này. Một số DBMS thực hiện một số chức năng của tiêu chuẩn, chức năng thứ hai - các chức năng khác, v.v.

Hệ quản trị cơ sở dữ liệu càng đắt tiền thì càng có nhiều tính năng của tiêu chuẩn mà nó triển khai. Ngoài ra, nhiều DBMS thường triển khai các tính năng độc đáo của riêng chúng bên ngoài các tiêu chuẩn SQL. Đôi khi điều này dẫn đến các vấn đề về tính di động: Các truy vấn SQL được viết cho một DBMS có thể không hoạt động tốt cho một DBMS khác.

Java cũng gặp tình trạng tương tự. Nếu một chương trình Java được viết trên Windows thì nó sẽ không hoạt động bình thường trên Linux. Để giải quyết vấn đề này, Java giới thiệu các lớp đặc biệt có các triển khai khác nhau cho các hệ điều hành khác nhau. Ví dụ: Lớp đường dẫn có triển khai WindowsPath, LinuxPath, v.v.

Phần thứ hai của vấn đề được giải quyết với sự trợ giúp của lập phiên bản. Tất cả những đổi mới thành công từ các ngôn ngữ hoặc DBMS khác nhau đều được thêm vào tiêu chuẩn JDK hoặc SQL mới. Bạn đã biết rằng có nhiều phiên bản JDK khác nhau và phiên bản càng mới thì càng có nhiều tính năng. Nó giống với SQL.

Trong ngôn ngữ SQL, có một số phiên bản tiêu chuẩn của nó, được đặt tên theo năm:

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

Tin tốt : chúng tôi sẽ không nghiên cứu các tiêu chuẩn này. Thứ nhất, sẽ mất nhiều năm để nghiên cứu và thành thạo tất cả những điều này. Và thứ hai, các tiêu chuẩn này giống như các phiên bản của Android: chỉ 5-10 năm sau khi phát hành, tiêu chuẩn này đã trở nên phổ biến rộng rãi.

Trong cơ sở dữ liệu với lượng dữ liệu lớn, mọi người cần độ tin cậy và ổn định. “Nó hoạt động, đừng chạm vào nó” là phương châm của tất cả những người làm việc với cơ sở dữ liệu. Và việc chuyển đổi sang phiên bản cơ sở dữ liệu mới được thực hiện 5 năm một lần, khi tất cả những ưu điểm của giải pháp như vậy đã rõ ràng.

1.3 Ngoài dấu ngoặc

Như tôi đã nói ở trên, phải mất nhiều năm để trở thành một chuyên gia cơ sở dữ liệu. Một chuyên gia biết rất nhiều điều mà chúng tôi sẽ không nghiên cứu. Nhưng tôi sẽ nói một chút về những gì khác trong cơ sở dữ liệu.

Hầu như tất cả các cơ sở dữ liệu hiện đại đều hỗ trợ:

1 Ngôn ngữ thủ tục (PL)

RDBMS hỗ trợ khả năng viết các thủ tục và hàm chạy trên SQL Server và có thể thực hiện nhiều thao tác với dữ liệu trong quá trình truy vấn. Ví dụ: một lần tôi đã viết các truy vấn PL SQL tới máy chủ Oracle, để đáp lại truy vấn đã tạo ... một trang HTML có dữ liệu. Vâng, bạn có thể.

2 sự kiện (Kích hoạt)

Tất cả các hệ quản trị cơ sở dữ liệu hiện đại đều hỗ trợ cơ chế sự kiện, được gọi là trình kích hoạt trong ngôn ngữ SQL. Một trình kích hoạt xảy ra như một phản ứng đối với một số hành động. Ví dụ: bạn có thể chặn mọi nỗ lực ghi vào cơ sở dữ liệu và thêm thời gian chính xác thay đổi của chúng vào các dòng mới.

3 Ghi nhật ký

Cơ sở dữ liệu hiện đại cố gắng đạt tốc độ siêu nhanh, do đó, thường thì tất cả các thay đổi (hàng mới, hàng đã xóa, hàng đã thay đổi) trước tiên được ghi vào một tệp đặc biệt có tên là nhật ký. Và chỉ sau một thời gian, máy chủ SQL sẽ hợp nhất các bản ghi này với cơ sở dữ liệu chính.

Theo một số cách, điều này tương tự như hành vi của Trình thu gom rác trong Java: lúc đầu, nó cũng chỉ đơn giản đánh dấu các đối tượng là đã bị xóa và thực hiện dọn dẹp và tối ưu hóa bộ nhớ trong thời gian nhàn rỗi.

4 plugin

Đối với DBMS, cũng như đối với nhiều chương trình, bạn có thể viết các plugin của riêng mình. Các plugin như vậy cho phép bạn thêm các kiểu dữ liệu duy nhất, các chức năng để làm việc với chúng hoặc thay đổi hành vi tiêu chuẩn của DBMS. Điều này đặc biệt hữu ích khi bạn làm việc với cơ sở dữ liệu mã nguồn mở và có một số lỗi.

5 Công việc phân tán (cụm)

Một tình huống điển hình cho máy chủ SQL hiện đại là một cụm gồm nhiều máy chủ. Tùy chọn đơn giản nhất là khi dữ liệu được ghi vào một máy chủ và được đọc từ một nhóm máy chủ. Trong trường hợp này, bạn có thể cấu hình các tình huống khác nhau để đồng bộ hóa cơ sở dữ liệu giữa các máy chủ SQL.

6 chia nhỏ

Khi có nhiều dữ liệu, chúng bắt đầu được chia thành các cơ sở dữ liệu khác nhau. Cho đến thực tế là một bảng có thể được lưu trữ trong các phần trong các cơ sở dữ liệu khác nhau.

Sharding có thể theo chiều dọc và chiều ngang. Phân mảnh dọc có nghĩa là bảng được cắt theo các đường thẳng đứng, trong khi phân mảnh ngang được cắt thành các đường ngang.

Ví dụ: chúng tôi quyết định chia tất cả dữ liệu trong bảng theo năm: cho năm 2019 - một bảng, cho dữ liệu của năm 2020 - bảng thứ hai, v.v. Đây sẽ là sharding ngang.

7 xô người không xô

Ở một giai đoạn nhất định trong quá trình phát triển cơ sở dữ liệu, ngày càng nhiều logic kinh doanh bắt đầu được thêm vào chúng. Tất cả bắt đầu với các thủ tục, chức năng, tạo trang web bằng máy chủ và kết thúc bằng việc bổ sung hỗ trợ cho hầu hết các ngôn ngữ phổ biến cho DBMS: Python, JavaScript và thậm chí cả Java và C ++.

Nghe có vẻ thú vị cho đến khi bạn bắt đầu tìm hiểu chi tiết: bạn có thực sự muốn viết logic nghiệp vụ ứng dụng web của mình bằng Java, logic này sẽ được thực thi bên trong máy chủ SQL, nơi không có JDK, thư viện java, khung, ít bộ nhớ và nhiều hạn chế khác?