Các ứng dụng Express có thể dùng nhiều loại cơ sở dữ liệu khác nhau, và có khá là nhiều hướng tiếp cận để bạn có thể thực hiện Create, Read, Update and Delete (CRUD).

1.Lựa chọn CSDL nào?

Ứng dụng Express có thể dùng bất cứ cơ sở dữ liệu nào được hỗ trợ bởi Node (Express không đưa ra bất cứ đặc tả chỉ tiết hành vi hay ràng buộc nào về hệ quản trị cơ sở dữ liệu). Thành ra có rất nhiều các CSDL khác nhau để bạn thoả sức chọn lựa, bao gồm PostgreSQL, MySQL, Redis, SQLite, và MongoDB.

Khi chọn một cơ sở dữ liệu, bạn nên cân nhắc những thứ như là độ khó, hiệu năng, dễ dàng bảo trì, chi phí, sự hỗ trợ của cộng đồng,… Do chưa có cơ sở dữ liệu nào đạt được mọi tiêu chí, nên bạn cũng cần cân nhắc theo từng dự án cụ thể của bạn.

2.Cách thao tác với CSDL?

Có hai hướng tiếp cận để thao tác với một cơ sở dữ liệu:

  • Sử dụng ngôn ngữ truy vấn của riêng cơ sở dữ liệu đó (ví dụ như SQL)
  • Sử dụng Object Data Model (“ODM”) / Object Relational Model (“ORM”). ODM/ORM đại diện cho dữ liệu của trang web dưới dạng đối tượng trong JavaScript, sau đó đối chiếu với nền cơ sở dữ liệu bên dưới. Một vài ORMs được gắn với một cơ sở dữ liệu nào đó, trong khi số khác chỉ là một cầu nối giữa cơ sở dữ liệu và phần code backend.

Sử dụng ngôn ngữ truy vấn được hỗ trợ bởi cơ sở dữ liệu (như là SQL) sẽ đạt được hiệu suất cao nhất. ODM thường chậm hơn bởi nó phải thông dịch mã để có thể truy vấn giữa đối tượng và định dạng của cơ sở dữ liệu, mà không dùng được các truy vấn hiệu quả nhất của cơ sở dữ liệu (điều này càng nghiêm trọng hơn khi ORM được sử dụng cho nhiều dạng cơ sở dữ liệu khác nhau, và phải tạo ra nhiều điều khoản lằng nhằng hơn đối với lượng tính năng được cơ sở dữ liệu hỗ trợ).

Điểm mạnh của ORM là lập trình viên có thể giữ tư duy như với đối tượng của JavaScript thay vì phải ngôn ngữ thuần tuý viết riêng cho cơ sở dữ liệu – điều này càng đúng khi bạn phải làm việc với nhiều loại cơ sở dữ liệu (trên cùng hoặc khác trang web). ORM còn cung cấp các tính năng để xác thực và kiểm tra dữ liệu.

Trong thực tế, sử dụng ODM/ORMs thường giúp giảm thiểu chi phí phát triển và bảo trì! Trừ phi bạn đã quá thân thuộc với ngôn ngữ truy vấn thuần tuý hoặc hiệu suất là trên hết, còn không bạn nên cân nhắc đến việc sử dụng ODM/ORMs trong các dự án của mình.

Có nhiều giải pháp cho ODM/ORM có sẵn trên trang quản lý gói NPM (bạn có thể dễ dàng tìm thấy trong kho của NPM bằng việc search các từ khóa odm hoặc orm).

Vào thời điểm viết bài này có một số giải pháp phổ biến như sau:

  • Mongoose: Mongoose là một công cụ mô hình hoá đối tượng MongoDB, được thiết kế để làm việc trên môi trường bất đồng bộ.
  • Waterline: Một ORM trích xuất từ nền tảng web nền Express, Sails. Nó cung cấp một bộ API tiêu chuẩn để truy cập vào vô số kiểu cơ sở dữ liệu khác nhau, bao gồm Redis, mySQL, LDAP, MongoDB, và Postgres.
  • Bookshelf: Trên nền promise và giao diện callback truyền thống, cung cấp giao tác hỗ trợ, eager/nested-eager relation loading, sự kết hợp đa hình, and hỗ trợ quan hệ một-một, một-nhiều, nhiều-nhiều. Làm việc với PostgreSQL, MySQL, và SQLite3.
  • Objection: Vận dụng hết sức mạnh của SQL và hạ tầng cơ sở dữ liệu bên dưới (hỗ trợ SQLite3, Postgres, và MySQL) theo cách dễ dàng nhất có thể.
  • Sequelize là một ORM nền Promise dành cho Node.js và io.js. Nó hỗ trợ biên dịch PostgreSQL, MySQL, MariaDB, SQLite và MSSQL và hỗ trợ giao tác cứng, các quan hệ, read replication và nhiều hơn thế.

Như một luật ngầm định, bạn nên cân nhắc cả tính năng được công bố cũng như “hoạt động cộng đồng” (tải xuống, góp sức, báo lỗi, chất lượng của tài liệu,…) khi lựa chọn một giải pháp.

Đôi khi bạn không cần phải biết gì về cách truy vấn truyền thống của CSDL bạn sử dụng, bạn vẫn có thể thao tác dễ dàng thông qua các ODM/ORM. Tuy nhiên, việc hiểu về CSDL bạn sử dụng sẽ đem lại cho bạn các kiến thức và tư duy tốt khi làm việc thông qua ODM/ORM.

Chúc các bạn thành công.

Nguồn: tổng hợp từ internet

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây