Dữ liệu là xương sống của tất cả các lĩnh vực con của khoa học dữ liệu. Bất kể quy mô hoặc ứng dụng của dự án bạn đang xây dựng, bạn sẽ cần lấy và phân tích dữ liệu. Thông thường, dữ liệu bạn cần được lưu trữ trong DBMS (hệ thống quản lý cơ sở dữ liệu). Show Để tương tác và giao tiếp với DBMS, bạn cần sử dụng ngôn ngữ của nó hoặc ngôn ngữ mà nó hiểu được. Ngôn ngữ được sử dụng để tương tác với DBMS là SQL (Ngôn ngữ truy vấn có cấu trúc). Trong những năm gần đây, một thuật ngữ khác xuất hiện trong lĩnh vực cơ sở dữ liệu: cơ sở dữ liệu NoSQL. Nếu bạn mới bắt đầu với khoa học dữ liệu, bạn có thể đã nghe nói về cả cơ sở dữ liệu SQL và NoSQL. Nhưng, sự khác biệt là gì và làm thế nào để bạn chọn cái nào để sử dụng?Hãy bắt đầu từ đầu tuyệt đối. Tại sao chúng ta có hai cách tiếp cận để tương tác với cơ sở dữ liệu? Đơn giản: SQL và NoSQL tương tác với các loại cơ sở dữ liệu khác nhau. SQL là cách tiếp cận được sử dụng để tương tác với cơ sở dữ liệu quan hệ, trong khi NoSQL được sử dụng để tương tác với cơ sở dữ liệu không quan hệ. SQL SO VỚI NOSQL: SỰ KHÁC BIỆT LÀ GÌ?Cơ sở dữ liệu SQL cũ hơn nên chúng có cấu trúc và thiết kế lược đồ cố định lâu đời hơn. Cơ sở dữ liệu NoSQL có thể dễ dàng mở rộng, linh hoạt và tương đối đơn giản để sử dụng do lược đồ linh hoạt của chúng. SQL là cách tiếp cận được sử dụng để tương tác với cơ sở dữ liệu quan hệ, trong khi NoSQL được sử dụng để tương tác với cơ sở dữ liệu không quan hệ. Cơ sở dữ liệu quan hệTrong cơ sở dữ liệu quan hệ, dữ liệu được lưu trữ trong các bảng khác nhau, mỗi bảng chứa nhiều bản ghi (hàng). Các bảng này được kết nối với nhau bằng một hoặc nhiều quan hệ. Các phím xác định mối quan hệ giữa các bảng. Khóa là trường bảng (cột) chứa các giá trị duy nhất cho mỗi bản ghi. Nếu một trường được xác định là khóa chính của bảng, trường này có thể được đưa vào nhiều bảng và có thể được sử dụng để truy cập đồng thời các bảng khác nhau. Khi một khóa chính kết nối một bảng này với một bảng khác, nó sẽ được biết đến trong bảng kia như một khóa ngoại. Ví dụ, hình ảnh dưới đây cho thấy một phần cơ sở dữ liệu của một hãng hàng không. Chúng tôi có hai bảng: bảng phi công và bảng các chuyến bay. Hai bảng này được kết nối và được sử dụng làm khóa chính trong bảng thí điểm “PilotId”. Tôi có thể sử dụng ID của phi công để truy cập thông tin về phi công cho bảng phi công và các chuyến bay mà phi công này đang xử lý từ bảng chuyến bay. Vì vậy, trong bảng phi công, PilotId là khóa chính, trong khi đó là khóa ngoại trong bảng chuyến bay. PilotId được sử dụng ở đây để tạo mối quan hệ giữa hai bảng. Cơ sở dữ liệu không quan hệKhông giống như cơ sở dữ liệu quan hệ, cơ sở dữ liệu không quan hệ – cơ sở dữ liệu NoSQL – không lưu trữ dữ liệu trong các bảng và bản ghi. Thay vào đó, trong các loại cơ sở dữ liệu này, cấu trúc lưu trữ dữ liệu được thiết kế và tối ưu hóa cho các yêu cầu cụ thể. Thay vì SQL, cơ sở dữ liệu quan hệ sử dụng, cơ sở dữ liệu NoSQL sử dụng ánh xạ đối tượng-quan hệ (ORM) để tạo điều kiện giao tiếp với dữ liệu của nó. Bốn loại cơ sở dữ liệu NoSQL phổ biến là: hướng cột, hướng tài liệu, cặp khóa-giá trị và cơ sở dữ liệu đồ thị. Bạn có thể sử dụng các loại này riêng lẻ hoặc có thể kết hợp chúng. Sự lựa chọn sẽ phụ thuộc vào ứng dụng của bạn và loại dữ liệu bạn cần lưu trữ. Bài viết được sự cho phép của tác giả Kiên Nguyễn Thời gian gần đây NoSQL nổi lên như là một loại hình cơ sở dữ liệu mới. Hỗ trợ đầy đủ, hiệu năng không thua kém cấu trúc SQL truyền thống. Tuy nhiên, điểm mạnh NoSQL thực sự nằm ở đâu, điều gì làm NoSQL trở thành lựa chọn tuyệt vời trong một số trường hợp? Bài viết dưới đây cung cấp cho anh em cái nhìn tổng quan về NoSQL, trường hợp nào nên sử dụng, khi nào không. Nắm rõ để sau này được giao nhiệm vụ chọn technology đỡ bỡ ngỡ như cô Tấm lên Sài Gòn nha. Hiểu điểm mạnh NoSQL để đỡ phải lăn tăn sau này 1. NoSQL là gì?Xin được trích nguyên văn từ bài viết định nghĩa NoSQL từ Amazon. Mục đích chỉ để nhắc lại định nghĩa kẻo quên.
Bài viết này sẽ tập trung phân tích về hai điểm mạnh NoSQL là khả năng phát triển và tính linh hoạt. Đã tìm hiểu về SQL và NoSQL, nốt công tìm hiểu thêm về Database Indexes. Index từ đâu cũng đã là một vấn đề bắt buộc mọi Kỹ sư phần mềm (Software Engineer) phải biết. Tuy nhiên, từ sử dụng cho tới việc nắm chắc về Database Indexes lại là chuyển khác. Chính vì vậy, anh em có thể tham khảo thêm: Database indexes : advantages and disadvantages. 2. NoSQL tốt trong trường hợp nào?2.1 Khi cấu trúc dữ liệu chưa hoàn chỉnhThực tế, thời gian cho vòng đời một phần mềm (Software) đang ngày càng rút ngắn. Không thể cứng nhắc là phải có Database Structure rõ ràng mới bắt đầu phát triển phần mềm. Tùy vào đặc thù của từng dự án để linh động trong giải quyết vấn đề. Hiện tại, nếu table A được định nghĩa 4 column (4 field). Nhưng trong quá trình phát triển, nếu ta cần thêm 2 field nữa, sự khác biệt sẽ nhận thấy rõ ngay giữa SQL và NoSQL
Rõ ràng mà nói điểm mạnh NoSQL là tốt cho các ứng dụng có cấu trúc CSDL chưa hoàn chỉnh, đang hoặc sẽ được điều chỉnh trong quá trình sử dụng. 2.2 Khả năng phát triển nhanh chóngVới cơ sở dữ liệu quan hệ SQL (Structure Query Language), thay vì phải định nghĩa rõ ràng các ràng buộc (relationship) giữa các table, các primary key, NoSQL đơn giản hơn nhiều. NoSQL cũng có index, nhưng các platform hiện nay cung cấp NoSQL đều hỗ trợ tự động việc đánh index. Mấy ông Dev có thể nhanh chóng tạo ra một CSDL, thực hiện CRUD chỉ bằng cách gọi một function. Không thể chối bỏ, điểm mạnh NoSQL là khả năng tăng tốc. Giúp phát triển ứng dụng càng ngày càng nhanh chóng và hiệu quả. Xu thế tất yêu là các ứng dụng yêu cầu thời gian phát triển nhanh sẽ chuyển qua sử dụng NoSQL 3. Một số loại CSDL NoSQL3.1 Key-Value (K-V) StoresKey-value là loại cấu trúc thường được sử dụng nhất trong các Hệ CSDL NoSQL.
Hình dưới đây là Key-value được lưu trữ trong collection ở Firebase. Với một key (được Firebase định danh duy nhất), ta có thể lấy ra tất cả field được store với key này. Điểm mạnh NoSQL chính là ở chỗ này, một key có thể lấy ra nhiều value, số lượng item trong value cũng flexible, có thể tùy biến được.
3.2 Document StoresNgoại trừ Key-value sử dụng phổ biến, NoSQL cũng hỗ trợ Document Stores. Loại này:
Thay vì tạo các column lưu trữ VARCHAR, CHAR rồi store JSON. Một số platform hỗ trợ lưu trữ các object JSON, dễ dàng để store và collect hơn. Đây là điểm mạnh NoSQL có được, vượt lên so với các hệ cơ sở dữ liệu SQL truyền thống. 3.3 Column-Oriented StoresLưu trữ hướng về cột (Column Oriented Stores) gần giống như relations ship giữa các primary key bên phía SQL.
Ngoài ra:
4. Có đáng để thử?Quy trình phát triển phần mềm hiện nay càng ngày càng nhanh chóng. Với các yêu cầu có tính chất đặc thù (yêu cầu nhanh, realtime, cấu trúc thay đổi,…) ta nên cân nhắc sử dụng SQL. Biết và thực hành NoSQL là nội dung quan trọng yêu cầu các Kỹ sư phần mềm cần biết. Ngại gì mà không thử ngay nào!. Link một số hệ CSDL NoSQL đây nha:
Thời thế thay đổi. Giai đoạn càng về sau càng có nhiều application hoạt động với Unstructured (không cấu trúc) hoặc nửa cấu trúc, nửa không (Semi-Structured Data) 5. Tham khảo thêm về điểm mạnh NoSQL
Cảm ơn anh em đã đọc bài. Nếu hay nhớ like page để không bỏ lỡ bài viết mới nha! Bài viết gốc được đăng tải tại kieblog.com Có thể bạn quan tâm:
Xem thêm các việc làm Developer hấp dẫn tại TopDev |