October 20, 2021

Database NoSQL và Firebase

Trong vài năm qua chúng ta đã thấy sự tăng trưởng đột biến của một loại cơ sở dữ liệu mới, đó là cơ sở dữ liệu NoSQL. NoSQL đang dần nổi lên như một thế lực trong giới lập trình, ngày càng lấn lướt và thay thế cho cơ sở dữ liệu(CSDL) quan hệ truyền thống(RDBMS).

NoSQL là gì ?

Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm tên gọi chung cho các lightweight open source relational database (cơ sở dữ liệu quan hệ nguồn mở nhỏ) nhưng không sử dụng SQL cho truy vấn. Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ database mới: distributed (phân tán) + non-relational (không ràng buộc). Đây là 2 đặc tính quan trọng nhất.

Điều gì khiến NoSQL dần chiếm lĩnh ngành công nghiệp phần mềm
Có một quy luật phát triển là cái ra sau sẽ hoàn thiện cái trước đó. Nói dễ hiểu là khác phục những nhược điểm của cái trước đó.

Vậy Khuyết điểm của SQL là gì ?

  • Việc mapping giữa các bảng trong database với các object trong code khá rắc rối và phức tạp. (Mặc dù 1 số ORM như Entity Framework, Hibernate đã đơn giản hóa chuyện này).
  • Performance sẽ bị chậm khi phải join nhiều bảng để lấy dữ liệu (Đó là lý do ta sử dụng “giảm chuẩn” để tăng hiệu suất cho RDBMS).
  • Việc thay đổi cấu trúc dữ liệu (Thêm/xóa bảng hoặc thêm/xóa một field) rất mệt mỏi, kéo theo vô số thay đổi trên code.
  • Không làm việc được với dữ liệu không có cấu trúc (un-structure).
  • RDBMS được thiết kế để chạy trên một máy chủ. Khi muốn mở rộng, nó khó chạy trên nhiều máy (clustering).

    Và rồi NoSQL Database ra đời, giải quyết được những khuyết điểm của RDBMS:

    • Dữ liệu trong NoSQL DB được lưu dưới dạng document, object. Truy vấn dễ dàng và nhanh hơn RDBMS nhiều.
    • NoSQL có thể làm việc hoàn toàn ok với dữ liệu dạng không có cấu trúc.
    • Việc đổi cấu trúc dữ liệu (Thêm, xóa trường hoặc bảng) rất dễ dàng và nhanh gọn trong NoSQL.
    • Vì không đặt nặng tính ACID của transactions và tính nhất quán của dữ liệu, NoSQL DB có thể mở rộng, chạy trên nhiều máy một cách dễ dàng.

    FireBase và CSDL Realtime

    Nhắc tới Firebase thì không thể không nhắc tới Realtime Database – tính năng khởi thủy của “Ngọn lửa”. Đây cũng là dịch vụ trung tâm trong hệ thống các dịch vụ khác củaFirebase. 

    Cơ sở dữ liệu Firebase Realtime là một cơ sở dữ liệu NoSQL được lưu trữ trên đám mây cho phép bạn lưu trữ và đồng bộ dữ liệu giữa người dùng của bạn trong thời gian thực.


    Realtime syncing giúp người dùng có thể truy cập dữ liệu trên nhiều thiết bị khác nhau

    Xây dựng ứng dụng không Server

    Nếu bạn phải đau đầu vì khi xay dựng 1 ứng dụng nhỏ trên mobile thì cần phải có 1 server để lưu trữ dữ liệu thì Firebase có thể được ví như thuốc giảm đau hiệu quả.

    Tối ưu hóa cho việc sử dụng dữ liệu offline

    Khi người dùng ngoại tuyến, dữ liệu sẽ được lưu trên bộ nhớ cache của thiết bị và tự động đồng bộ khi bạn trực tuyến. Tất cả là tự động.

    Tính bảo mật cao

    The Realtime Database kết hợp với Firebase Authentication để cung cấp chứng thực đơn giản và trực quan cho các nhà phát triển.

Pham Van Tuyen

Anh Tuyen Pham là Tổng giám đốc của Cloud Ace Việt Nam và là GDG Cloud HCM Chapter Lead. Anh là diễn giả quen thuộc tại các sự kiện do Google tổ chức tại Việt Nam như Kubernetes Vietnam, Google Cloud Next Extended. Anh đã có các chứng chỉ của Google Cloud như Google Cloud Architect và Data Engineer.

View all posts by Pham Van Tuyen →