Hệ thống kiến thức Database này dành cho việc học backend, thực hành kỹ thuật và ôn tập phỏng vấn. Các bài viết về Database trên website được sắp xếp theo thứ tự “kiến thức cơ bản về Database -> SQL -> MySQL -> Redis -> NoSQL và công cụ tìm kiếm”.
Hệ thống kiến thức Database này dành cho việc học backend, thực hành kỹ thuật và ôn tập phỏng vấn. Các bài viết về Database trên website được sắp xếp theo thứ tự “kiến thức cơ bản về Database -> SQL -> MySQL -> Redis -> NoSQL và công cụ tìm kiếm”.
Đây là phần kiến thức nền tảng về database, bạn nhất định phải hiểu và ghi nhớ. Tuy chỉ là kiến thức lý thuyết nhưng phần này rất quan trọng, là nền tảng cho việc học database MySQL sau này. PS: Vì phần này liên quan đến quá nhiều nội dung mang tính khái niệm nên đã tham khảo các phần giới thiệu tương ứng trên Wikipedia và Baidu Baike.
Trong MySQL có hai cách triển khai UTF-8: utf8 và utf8mb4.
Nếu dùng utf8, việc lưu ký hiệu emoji, một số chữ phức tạp và chữ phồn thể sẽ xảy ra lỗi.
Tại sao lại như vậy? Bài viết này sẽ giải thích vấn đề từ gốc rễ.
NoSQL (viết tắt của Not Only SQL) là tên gọi chung cho các cơ sở dữ liệu non-relational, chủ yếu hướng đến việc lưu trữ dữ liệu dạng key-value, document và graph. Cơ sở dữ liệu NoSQL vốn hỗ trợ các đặc tính như mô hình distributed, data redundancy và data sharding, nhằm cung cấp giải pháp lưu trữ dữ liệu có khả năng mở rộng, tính sẵn sàng cao và hiệu năng cao.
Các câu hỏi phỏng vấn liên quan đến Elasticsearch là nội dung độc quyền dành cho Knowledge Planet của tôi (nhấp vào liên kết để xem giới thiệu chi tiết và cách tham gia), đã được tổng hợp vào Cẩm nang phỏng vấn Java.
MongoDB là một document database điển hình, phù hợp với dữ liệu bán cấu trúc, mô hình field linh hoạt và các trường hợp sử dụng cần lặp nhanh. Khi học MongoDB, nên tập trung hiểu document model, index, replica set, sharding, aggregation và khả năng transaction, thay vì chỉ xem nó đơn giản là “database có thể lưu JSON”.
Một phần nhỏ nội dung tham khảo mô tả trong tài liệu chính thức của MongoDB, xin nêu rõ tại đây.
MongoDB là một hệ thống cơ sở dữ liệu NoSQL mã nguồn mở dựa trên distributed file storage, được viết bằng C++. MongoDB cung cấp phương thức lưu trữ document-oriented, thao tác tương đối đơn giản, hỗ trợ mô hình hóa dữ liệu schema-less, có thể lưu trữ các kiểu dữ liệu tương đối phức tạp và là một document database rất phổ biến.
Tương tự database quan hệ, MongoDB cũng có index. Mục đích chính của index là nâng cao hiệu quả truy vấn. Nếu không có index, MongoDB phải thực hiện collection scan, tức là quét từng document trong collection để chọn các document khớp với câu truy vấn. Nếu truy vấn có index phù hợp, MongoDB có thể dùng index đó để giới hạn số document phải kiểm tra. Ngoài ra, MongoDB có thể dùng thứ tự sắp xếp trong index để trả về kết quả đã được sắp xếp.
MySQL là một trong những relational database được dùng phổ biến nhất trong backend development, đồng thời là chuyên đề dễ bị hỏi sâu đến cùng trong các buổi phỏng vấn database. Khi học MySQL, nên tập trung vào các mạch chính: index làm truy vấn nhanh hơn như thế nào, transaction bảo đảm consistency ra sao, log bảo đảm recovery và replication thế nào, dữ liệu được đồng bộ tới các hệ thống không đồng nhất như search ra sao, execution plan xác định slow SQL như thế nào.
Địa chỉ bản gốc: https://shockerli.net/post/1000-line-mysql-note/ , JavaGuide đã biên tập lại bài viết và bổ sung mục lục.
Đây là một bản tổng hợp rất hay, đặc biệt khuyến nghị bạn lưu lại để xem khi cần.