Ghi chú Nodejs. Express, và MongoDB - 01
TIL
612
@100daysTIL
72
White

Minh-Trung Nguyễn viết ngày 01/02/2018

Ghi chú Nodejs. Express, và MongoDB - 01.

Ghi chú: Series Today I Learn trong vòng 100 ngày thử thách bản thân - ngày 09. Mỗi ngày 1 câu hỏi, 1 câu trả lời (ngắn nhất có thể). Mời cả nhà cũng tham gia. Tag đề nghị: #100daysTIL.


Nên chọn loại database nào?

  • Mỗi ứng dụng cần có 1 database để giúp việc lưu dữ liệu vào/ lấy dữ liệu ra hiệu quả.
  • Những ứng dụng sử dụng Express có thể làm việc với nhiều loại database.
  • Có nhiều hướng tiếp cận cho 4 hoạt động cốt lõi "CRUD" - Create, Read, Update và Delete dữ liệu.
  • Có nhiều loaị database để lựa chọn, ví dụ như: PostgresSQL, MySQL, Redis, SQLite, và MongoDB.
  • Việc lựa chọn loại database cho dự án nên cân nhắc vào các yếu tố: năng suất, độ khó, hiệu năng, dễ dàng bảo trì, chi phí, hỗ trợ của cộng đồng, v.v.

Tương tác với database ra sao?

  • Cách chính để tương tác với database:
    • Cách 1: Sử dụng ngôn ngữ truy vấn SQL.
    • Cách 2: Sử dụng một Object Data Model (ODM) hoặc Object Relational Model (ORM).
    • Một ODM/ ORM biểu diễn dữ liệu của webiste dưới dạng object trong JavaScript, sau đó đối chiếu đến nền database bên dưới.
    • Một vài ORM gắn với với một database cụ thể nào đó, trong khi một vài ORM khác chỉ là một cầu nối chung.

Ưu nhược điểm của cách 1: sử dụng ngôn ngữ truy vấn:

  1. Ưu điểm: Sử dụng ngôn ngữ truy vấn SQL đem lại hiệu năng cao nhất.
  2. Nhược điểm: Phải nhớ cụ thể cú pháp của từng ngôn ngữ. Việc này có thể khiến lập trình viên mệt mỏi khi phải nhớ nhiều cú pháp khác nhau.

Ưu nhược điểm của cách 2: sử dụng ORM:

  1. Ưu điểm:
    • Sử dụng ODM đem lại lợi thế là lập trình viên có thể tiếp tục nghĩ về database như những objects trong JavaScript thay vì sử dụng cú pháp thuần túy viết riêng cho database. Điều trên càng đúng khi cùng một lúc phải làm việc với nhiều loại database.
    • ORM còn cung cấp những tính năng để validate và check dữ liệu.
  2. Nhược điểm:
    • ODM thường chậm hơn bởi nó phải sử dụng translation code để map giữa objects và database. Và translation code này thường không tối ưu khi truy vấn database. Điều này lại càng nghiêm trọng khi dùng những ODM hỗ trợ nhiều loại database.

Sử dụng Mongoose và MongoDb cho dự án

  • MongoDB là database, Mongoose là ODM.
  • Mongoose: đóng vai trò như một front-end đối với MongoDB.
  • MongoDB:
    • là database dạng none-SQL,
    • mã nguồn mở,
    • sử dụng cái gọi là document-oriented data model.
    • là "collections" của "documents" ,tương đương với "tables" of "rows" trong database dạng relational.
  • Việc sử dụng 1 database và 1 ODM là cách vô cùng thông dụng trong cộng đồng Nodejs, chủ yếu bởi vì mọi thứ đều giống với cách xử lý JSON, vốn quen thuộc với lập trình viên JavaScript.

Kết luận

Nhiều thứ cần học quá. Trong back-end chỗ nào cũng thấy nhiều logic.

Tham khảo

ngminhtrung 31-01-2018

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Minh-Trung Nguyễn

58 bài viết.
74 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
44 15
Đăng lại một bài đã viết từ cách đây mấy tháng. Chủ đề này đã có không ít, nhưng chẳng hiểu sao lượng bài tự viết của dân lập trình người Việt ta v...
Minh-Trung Nguyễn viết 4 tháng trước
44 15
White
27 5
Ghi chú: Tiêu đề hoàn toàn mang tính câu view. Bài copy từ blog của tác giả :) Tại sao lại có bài viết này? Một ngày đẹp giời tôi cần kiểm t...
Minh-Trung Nguyễn viết 8 tháng trước
27 5
White
16 4
Về bước tìm và xử lý dữ liệu của Việt Nam phục vụ Data Visualization nền web Làm việc với D3js được nửa năm, một trong những điều bận lòng là chưa...
Minh-Trung Nguyễn viết 4 tháng trước
16 4
Bài viết liên quan
White
2 1
Javascript inititalValue trong reduce() có quan trọng không? Day 41: Đọc code mẫu về hàm reduce() trong (Link), thấy hàm reduce() khá "đơn giản"....
Minh-Trung Nguyễn viết 4 tháng trước
2 1
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 2 tháng trước
0 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
58 bài viết.
74 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!