Lịch sử phát triển của cơ sở dữ liệu: - - - Ban đầu, CSDL được lưu trữ trên các băng giấy, đến năm 1951 thì được lưu trữ trên băng từ. Vào năm 1955, sự xuất hiện của đĩa từ đã giúp cho việc truy cập trực tiếp một cách độc lập vào bản ghi. Năm 1961, PP lập chỉ mục đã làm tăng khả năng truy cập nhanh theo hướng bản ghi với pp ISAM_Index Sequential Access Method. Với cuộc cách mạng về CSDL đầu tiên: o Mô hình dữ liệu phân cấp_Hierarchical Model ra đời (1965), với CSDL có quy mô lớn đầu tiên được công ty IBM thực hiện cho Cục Quản trị hàng không và không gian quốc gia của Mỹ để hỗ trợ cho việc quản lý dự án Apollo dùng để thám hiểm mặt trăng. -> sau đó được thương mại hóa với tên IMS_Information Management System (1968). o Cũng trong thời gian đó, Charles Bachman cũng phát triển Integrated Data Store_IDS sử dụng mô hình dạng mạng (Network Model), sau đó mô hình này được tiêu chuẩn hóa bởi CODASYL_Conference of Data System Language. Cuộc cách mạng lần 2 về CSDL: o Năm 1970, Edgar Codd, nhà khoa học làm cho IBM đề xuất khái niệm về hệ CSDL quan hệ o ….. NoSQL 1. NoSQL là gì? - NoSQL là một khái niệm dùng để chỉ tập hợp các HQT CSDL sử dụng mô hình không tuân theo các nguyên tắc của HQTCSDL quan hệ. - Cụm từ NoSQL còn được hiểu là Not only SQL để nhấn mạnh là các HQT CSDL NoSQL có thể hỗ trợ các ngôn ngữ truy vấn giống SQL. - Cơ sở dữ liệu NoSQL sử dụng nhiều mô hình khác dạng bảng để truy cập và quản lý dữ liệu. Các loại CSDL này được tối ưu hóa cho các ứng dụng cần mô hình dữ liệu linh hoạt có lượng dữ liệu lớn và độ trễ thấp, có thể đạt được bằng cách giảm bớt một số hạn chế về tính nhất quán của dữ liệu của các CSDL quan hệ khác. 2. Lịch sử của NoSQL - Năm 1998, Carlo Strozzi dùng cụm từ NoSQL để chỉ CSDL quan hệ mã nguồn mở nhỏ nhưng không sử dụng SQL để truy vấn - Năm 2009, Eric Evans giới thiệu lại thuật ngữ NoSQL trong một hội thảo về CSDL nguồn mở phân tán, không quan hệ. Thuật ngữ NoSQL đánh dấu sự phát triển của thế hệ CSDL mới: phân tán + phi quan hệ. Đây là 2 đặc tính quan trọng nhất. - Một số mốc thời gian phát triển của NoSQL: + 1998 - thuật ngữ NoSQL được sử dụng lần đầu bởi Carlo Strozzi + 2000 – CSDL Neo4j được phát triển + 2004 – Google phát triển BigTable + 2005 – CouchDB được phát triển + 2007 – các nghiên cứu được công bố trên Amazon Dynamo + 2008: Dự án mã nguồn mở Cassandra của Facebook + 2009: Thuật ngữ NoSQL được giới thiệu lại 3. Động lực phát triển của NoSQL: - NoSQL được phát triển do người ta có yêu cầu cần những database lưu trữ dữ liệu cực lớn, truy vấn dữ liệu tốc độ cao mà không đòi hỏi quá nhiều về năng lực phần cứng cũng như tài nguyên hệ thống và khả năng chịu lỗi - Có 4 yếu tố được cho là động lực phát triển của NoSQL: + Tính mở rộng (Scalability): là khả năng đáp ứng khối lượng yêu cầu lớn, thường thì SQL sẽ nâng cấp hệ thống có sẵn (scaling up) còn NoSQL sẽ thêm các server chi phí thấp (scaling out) + Giá thành (Cost): đa phần các HQT CSDL NoSQL là mã nguồn mở + Tính linh hoạt (Flexibility): NoSQL hỗ trợ rất nhiều các kiểu dữ liệu có cấu trúc, phi cấu trúc, đồ thị, văn bản, … + Tính sẵn sàng (Availability): NoSQL được vận hành bằng rất nhiều server, khi server này hỏng thì sẽ có server khác thay thế xử lý công việc, việc bị hỏng của server này không làm ảnh hưởng đến khả năng xử lý của hệ thống. - Một số đặc điểm của NoSQL: + Tính mở rộng cao: gần như không có giới hạn nào cho người dùng và dữ liệu trên hệ thống + Tính sẵn sàng của dữ liệu cao: một node trong hệ thống bị chết cũng không ảnh hưởng đến hệ thống + Tính nhất quán yếu, có thể không thấy ngay được sự thay đổi dữ liệu dù đã được cập nhật + Tính linh hoạt thể hiện ở vô số mô hình dữ liệu được hỗ trợ (cấu trúc, phi cấu trúc, bán cấu trúc) + Phi quan hệ: không có ràng buộc nào cho việc nhất quán dữ liệu. + Mô hình lưu trữ phân tán các tập tin hoặc dữ liệu ra nhiều máy khác nhau trong mang LAN hoặc Internet dưới sự kiểm soát của phần mềm. + 4. Sơ lược về HQT CSDL NoSQL - Có hơn 200 HQT CSDL NoSQL nhưng chỉ chia làm 4 loại chính, đó là + Key-value store + Column-oriented database + Graph database + Document-oriented database a. Key-value store (khóa-giá trị): - - - - Là kiểu lưu trữ dữ liệu NoSQL đơn giản nhất, mỗi đối tượng được lưu dưới dạng một cặp khóa và giá trị Ví dụ: với cấu trúc key-value, một file hệ thống với đường dẫn của file là key, còn nội dung là value CSDL khóa-giá trị có thể là lựa chọn tối ưu trong một số ngữ cảnh nhưng cực kỳ thiếu hiệu quả khi sử dụng trong trường hợp bạn có câu truy vấn quá phức tạp và nhu cầu tổng hợp gom nhóm Một số HQT CSDL khóa giá trị: Redis, Riak, OrientDB, … b. Column-oriented: Yếu tố quan trọng nhất của loại CSDL này là dữ liệu trong nhiều cột được lưu trữ trong mỗi dòng với key cho từng dòng. Mỗi cột là một nhóm các dữ liệu liên quan được truy cập cùng với nhau. Một số HQT CSDL column-oriented: Cassandra, Hbase, ScyllaDB, … - - - c. Graph: CSDL dạng đồ thị bao gồm các nút (node) và mối quan hệ (relationship) giữa chúng, mỗi nút và quan hệ đều có thuộc tính riêng Cực kỳ thích hợp để biểu diễn các mối quan hệ mật thiết của dữ liệu Điểm mạnh của CSDL dạng đồ thị là duyệt qua các nút thông qua các quan hệ Một số HQT CSDL dạng đồ thị: Neo4j, GraphDB, … d. Document-oriented: Lưu trữ giá trị khóa và giá trị của khóa được lưu dưới dạng tài liệu. Tài liệu này có cấu trúc phức tạp, chẳng hạn: nhiều cặp khóa-mảng, nhiều cặp khóa-giá trị hoặc tài liệu lồng vào nhau Điểm mạnh của CSDL loại này là dữ liệu truyền vào rất ít ràng buộc, miễn là có thể biểu diễn được ở dạng tài liệu Một số HQT CSDL document: MongoDB, CouchDB, … 5. So sánh giữa NoSQL và SQL: NoSQL - Không sử dụng SQL - Không khai báo ngôn ngữ truy vấn dữ liệu - Không định nghĩa schema - Có 1 số nhóm dạng: Key-Value store, Column store, Document DB, Graph stores… - Dữ liệu phi cấu trúc và không thể đoán trước. - Ưu tiên cho hiệu năng cao, tính sẵn sàng cao và khả năng mở rộng Khối lượng CSDL NoSQL được thiết kế cho các công việc mẫu truy cập dữ liệu, gồm các ứng tối ưu dụng có độ trễ thấp. CSDL tìm kiếm NoSQL được thiêt kế để phục vụ phân tích dữ liệu có cấu trúc chưa hoàn chỉnh Mô hình dữ CSDL NoSQL cung cấp nhiều mô liệu hình dữ liệu khác nhau như KeyValue, Document, Graph, được tối ưu hóa để đạt hiệu năng và quy mô tối ưu SQL - Dữ liệu có cấu trúc và tổ chức - Sử dụng ngôn ngữ SQL để truy vấn dữ liệu - Dữ liệu và các mối quan hệ của nó được lưu trữ trong các bảng riêng biệt - Có tính chặt chẽ CSDL quan hệ được thiết kế dành cho các ứng dụng xử lý giao dịch trực tuyến (OLTP) trong giao dịch có độ ổn định cao và thích hợp để xử lí phân tích trực tuyến (OLAP) Mô hình quan hệ chuẩn hóa dữ liệu vào bảng được hình thành từ hàng và cột. Sơ đồ quy định rõ bảng, hàng, cột, chỉ mục, mối quan hệ giữa các bảng và các thành phần CSDL khác. CSDL sẽ thực thi tính toàn vẹn tham chiếu trong mối quan hệ giữa các bảng. Thuộc tính CSDL NoSQL thường phải đánh đổi CSDL quan hệ có các thuộc tính ACID bằng cách nới lỏng một số thuộc tính mang tính nguyên tố, nhất quán, ACID của CSDL quan hệ để có mô tách biệt và bền vững. hình dữ liệu linh hoạt hơn có khả năng thay đổi quy mô theo chiều ngang.