Uploaded by nguyễn duy

NoSQL

advertisement
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.
Download