Với sự phát triển của công nghệ hiện nay thì không ít người, đặc biệt là công nhân viên chức phải "lao đao" để mở rộng thêm kiến thức về phương diện này. Có rất nhiều thuật ngữ, phầm mềm liên quan đến công nghệ và náy tính khiến nhiều người đau đầu. Đặc biệt là các hệ quản trị cơ sở dữ liệu - vì đây là một thứ cực kỳ cần thiết cho các nhân viên văn phòng. Trong đó, không ít người thắc mắc rằng NoSQL là gì? Một trong những lựa chọn cơ bản cần thực hiện khi phát triển một ứng dụng là sử dụng cơ sở dữ liệu (CSDL) SQL hay NoSQL để lưu trữ dữ liệu. Cơ sở dữ liệu quan hệ (RDBMS – Relational Database Management System) SQL đã được phát triển từ rất lâu, được kiểm nghiệm qua thời gian và sử dụng rất nhiều. Tuy nhiên SQL còn khá nhiều hạn chế về các bộ mặt chuyên môn. Đặc biệt có một số vấn đề về lưu trữ và truy vết cơ sở dữ liệu thật sự không quá phù hợp với SQL. Từ đó, NoSQL ra đời nhằm khắc phục các lỗi trên. Cơ sở dữ liệu NoSQL (NoSSQL database) là Cơ sở dữ liệu được xây dựng dành riêng cho mô hình dữ liệu và có sơ đồ linh hoạt để xây dựng các ứng dụng hiện đại. Cơ sở dữ liệu NoSQL được hầu hết mọi người công nhận và sử dụng rộng rãi vì khả năng dễ phát triển, chức năng cũng như hiệu năng ở quy mô lớn. NoSQL đặc biệt nhấn mạnh đến mô hình lưu trữ cặp giá trị - khóa và hệ thống lưu trữ phân tán. NoSQL được sử dụng cho dữ liệu lớn và ứng dụng web thời gian thực. Cơ sở dữ liệu này khá phù hợp với các trang lớn như Google, Facebook, Twitter vì các trang này một ngày có lượng truy cập hàng trăm triệu lượt. Cơ sở dữ liệu NoSQL là viết tắt của "Not Only SQL" hoặc "Not SQL". Đối với hệ thống cơ sở dữ liệu NoSQL, nó bao gồm một loạt các công nghệ cơ sở dữ liệu có thể lưu trữ dữ liệu có cấu trúc, bán cấu trúc, phi cấu trúc và đa hình. Có thể thấy NoSQL đang ngày càng rộng rãi và tiện lợi hơn SQL rất nhiều. Nó tích hợp nhiều tính năng hơn, ít sự hạn chế và giúp người dùng dễ dàng quản lý hơn. Khi nào thì dùng NoSQL? Khi các trang mạng và ứng dụng càng lớn, lượng truy cập hàng ngày càng nhiều thì càng thích hợp cho NoSQL. Khi sử dụng hệ cơ sở SQL trong trường hợp này, thời gian phản hồi của hệ thống sẽ trở nên chậm hơn cho phải xử lý khối lượng lớn dữ liệu. Điều này dễ gây ra tình trạng giật, lag và đơ ứng dụng. Khả năng mở rộng của cơ sở dữ liệu NoSQL cho phép một cơ sở dữ liệu phục vụ cả tác vụ nghiệp vụ (transactional) và phân tích từ cùng một cơ sở dữ liệu. Trong cơ sở dữ liệu SQL, thông thường, một data warehouse riêng biệt được sử dụng để hỗ trợ phân tích. Cơ sở dữ liệu NoSQL được tạo trong kỷ nguyên đám mây và đã nhanh chóng thích nghi với quá trình tự động hóa là một phần của đám mây. Việc triển khai cơ sở dữ liệu trên quy mô lớn theo cách hỗ trợ microservices thường dễ dàng hơn với cơ sở dữ liệu NoSQL. Cơ sở dữ liệu NoSQL thường có khả năng tích hợp vượt trội với các công nghệ phát trực tuyến thời gian thực (real-time streaming). Điều này sẽ giúp cho các mô hình ứng dụng mới được giúp đỡ nhiều hơn, ít bị hạn chế. Ưu nhược điểm của NoSQL: Ưu điểm: NoSQL giải quyết được các vấn đề dữ liệu lớn và khối lượng truy cập nhiều, cũng như về các hệ thống thông tin hoặc là phân tán dữ liệu. Việc mở rộng phạm vi: NoSQL thay thế câu thần chú cũ của các nhà quản trị CSDL về việc 'mở rộng phạm vi' với một thứ mới: 'mở rộng ra ngoài'. Thay vì phải bổ sung thêm những máy chủ lớn hơn để tải nhiều dữ liệu hơn, thì CSDL NoSQL cho phép một công ty phân tán tải qua nhiều máy chủ khi tải gia tăng. Điều này sẽ giúp các công ty dễ dàng điều hành và quản lý dữ liệu hơn. High availability: Khả năng tự động sao chép trong MongoDB làm cho nó rất tốt trong mọi trường hợp vì trong trường hợp có bất kỳ lỗi nào, dữ liệu sẽ tự động sao chép về trạng thái nhất quán trước đó. Đây là một tính năng tiện dụng đề phòng mọi bất trắc có thể xảy ra. Nhược điểm: Quản lý dữ liệu: Mục đích của các công cụ dữ liệu lớn là làm cho việc quản lý một lượng lớn dữ liệu trở nên đơn giản nhất. Nhưng quản lý dữ liệu trong NoSQL phức tạp hơn nhiều so với cơ sở dữ liệu quan hệ. Đặc biệt, NoSQL nổi tiếng là khó cài đặt và thậm chí là để quản lý nó hằng ngày cũng tốn khá nhiều thời gian. Sao lưu dữ liệu: Sao lưu là một điểm yếu lớn đối với một số cơ sở dữ liệu NoSQL như MongoDB. Nó không có cách tiếp cận để làm sao lưu dữ liệu một cách nhất quán. Thiếu tính nhất quán: NoSQL đánh đổi sự nhất quán để ưu tiên tốc độ, hiệu suất hiệu quả hơn. Chính vì vậy mà đôi khi bạn sử dụng hệ cơ sở này, sẽ gặp một số xung đột trong việc sắp xếp và thao tác. Trọng tâm hẹp: Cơ sở dữ liệu NoSQL có trọng tâm rất hẹp vì nó chủ yếu được thiết kế để lưu trữ nhưng nó cung cấp rất ít chức năng. Có thể nói không có gì là hoàn hảo, vậy nên bạn hãy dựa vào tính chất công việc của mình để lựa chọn cho phù hợp nhé.