Mọi cơ sở dữ liệu (CSDL – database) đều được tạo ra theo cách không giống nhau, mỗi loại đều có ưu và nhược điểm riêng. thực tại cho thấy những loại database như MySQL, MongoDB thỉnh thoảng bị “lạm dụng” vì tính phổ quát của nó, bất chấp tính tương hợp với dự án / nhu cầu ngày nay. Việc chỉnh sửa một database không hiệp để cải thiện tính tương xứng sẽ tiêu tốn nhiều thời kì, công sức và dẫn đến các lỗ hổng về bảo mật và khả năng mở mang của toàn hệ thống. Vậy, việc tuyển lựa một database hợp nhất cho dự án của bạn ngay từ đầu sẽ là sự chọn lọc tối ưu. Trước khi cân nhắc chọn database, mời các độc giả bài viết bên dưới, với nội dung gồm kê các dạng database thường thấy, điểm mạnh / kém của chúng và nhất là chúng thích hợp để dùng cho mục đích nào.
*Bài viết sử dụng nhiều từ chuyên ngành, định nghĩa nằm ở phần cuối
1. Hệ thống cơ sở quản ngại dữ liệu quan hệ – viết tắt RDBMS (Oracle, MySQL, MS Server, PostgreSQL)
Hệ thống quản lí cơ sở dữ liệu quan hệ được phát triển vào năm 1970 với nền tảng lí thuyết vững chắc và có ảnh hưởng lớn các hệ thống khác hôm nay. Tên tiếng Anh: *Relational database management system – RDBMS.
Các RDBMS lưu trữ dữ liệu với dạng “quan hệ”: các bảng với dòng và cột nơi mọi thông báo dữ liệu được lưu trữ như một giá trị của một ô cụ thể. Dữ liệu trong một RDBMS được quản lý duyệt y giao thức nức danh SQL – tiếng nói truy nã cấu trúc. SQL là giao thức được chuẩn hoá, đem đến sự đa nhiệm và tính dễ đoán biết.
Sau một thời gian bị người dùng sử dụng sai quy cách vì tính phổ biến của nó, người sáng lập SQL là E.F Codd đã lập nên 12 luật lệ sử dụng vận dụng cho tuốt luốt các hệ thống RDBMS, giúp các cơ chế này trả về đúng các dữ liệu được tầm, hạn chế việc thay đổi cấu trúc dữ liệu, đảm bảo tính thống nhất và đáng tin tức của các hệ thống này.
Điểm mạnh
Các hệ thống RDBMS hữu dụng trong việc xử lí các dữ liệu được cấu trúc kỹ càng và hỗ trợ ACID – 4 tính chất quan yếu của bất kì hệ thống cơ sở dữ liệu nào:
Tính nhân tố ( Atomicity ). Một giao thiệp có nhiều thao tác dị biệt thì hoặc là thảy các thao tác hoặc là không một thao tác nào được hoàn tất. chả hạn việc chuyển tiền có thể thành công hay trục trặc vì nhiều lý do nhưng tính yếu tố bảo đảm rằng một tài khoản sẽ không bị trừ tiền nếu như account kia chưa được cộng số tiền ứng.
Tính nhất quán ( Consistency ). Một giao dịch hoặc là sẽ tạo ra một dạng mới và hợp lệ cho dữ liệu, hoặc trong trường hợp có lỗi sẽ chuyển ắt dữ liệu về dạng trước khi thực thi giao dịch.
Tính độc lập ( Isolation ). Một giao dịch đang thực thi và chưa được xác nhận phải bảo đảm tách biệt khỏi các giao du khác.
Tính bền vững ( Durability ). Dữ liệu được công nhận sẽ được hệ thống lưu lại sao cho ngay cả trong trường hợp hư hỏng hoặc có lỗi hệ thống, dữ liệu vẫn đảm bảo trong thể chính xác.
Dữ liệu được lưu trữ và truy xuất dễ dàng bằng các lệnh truy hỏi SQL. Cấu trúc dữ liệu cũng có thể được mở rộng nhanh chóng, việc bổ sung thêm các dữ liệu mới cũng không ảnh hưởng tới các data có sẵn. Các RDBMS còn có khả năng cấp quyền truy xuất và chỉnh sửa thông tin cho các loại người dùng khác nhau (admin, user, khách vãng lai, etc.). Ví dụ, khách hàng có thể đăng nhập vào CSDL để soát thông báo tài khoản, nhưng chỉ các viên chức hoặc admin mới có thể xem và đổi thay thông tin đó.
Điểm yếu
Điểm yếu lớn nhất của RDBMS là không xử lí tốt các dữ liệu phi cấu trúc. Các dữ liệu khi bị chia cắt cần được viết lại dưới dạng khác dễ đọc hơn là ở dạng bảng tính (table), và tốc độ xử lí dữ liệu cũng khá chậm. Việc thay đổi cơ sở dữ liệu dạng RDBMS cũng khá khó vì tính quy củ chém của nó.
RDBMS tốn nhiều chi phí hơn các hệ thống cơ sở dữ liệu khác trong việc xây dựng và phát triển. Ngoài ra, cấu trúc của RDBMS làm phức tạp hoá việc nâng cấp và mở rộng máy chủ theo chiều dọc hoặc ngang (*horizontal/ vertical scalability). Việc phân mảnh (*sharding)trong khi vẫn giữ vững các tiêu chí về ACID là một thử thách lớn.
Nên dùng cơ sở dữ liệu RDBMS trong các trường hợp nào?
Các trường hợp khi giữ vững tính vẹn tuyền dữ liệu – dữ liệu không thể bị chỉnh sửa dễ dàng là tối cần thiết. thí dụ: các vận dụng của mảng tài chính, ứng dụng trong quốc phòng, an ninh và trong lĩnh vực thông báo sức khoẻ cá nhân chủ nghĩa.
Các lĩnh vực tự động hoá
thông tin nội bộ
2. Document store (MongoDB, Couchbase)
Document store được gọi là các cơ sở dữ liệu hướng tài liệu, một thiết kế biệt lập cho việc lưu trữ tài liệu dạng văn kiện JSON, BSON hoặc XML. Vì là cấu trúc dữ liệu không ràng buộc khác với SQL, các CSDL này không đòi hỏi người dùng tự tạo bảng nhập liệu trước khi nhập dữ liệu vào. Các tài liệu có thể chứa bất kì dữ liệu nào. CSDL dạng này có các cặp khoá – giá trị nhưng cũng có đính kèm các trị số siêu dữ liệu (*metadata) giúp việc tróc nã (*query) dễ dàng hơn.
Điểm mạnh
CSDL hướng tài liệu rất linh hoạt, có thể xử lí dữ liệu nửa cấu trúc và không cấu trúc rất tốt. Người dùng không cần quan tâm tới dạng dữ liệu khi setup, điều này tốt trong trường hợp bạn không lường trước được dạng dữ liệu nào bạn sẽ cần lưu trữ.
Người dùng có thể thiết kế một cấu trúc cho một tài liệu cụ thể mà không ảnh hưởng tới các tài liệu khác. Schema cho CSDL cũng có thể được tuỳ chỉnh mà không gây ra thời kì downtime, giúp đem đến *high availability (tính sẵn sàng cao). thời gian ghi dữ liệu cũng rất nhanh.
Ngoài tính linh hoạt, các lập trình viên còn chuộng document store bởi tính dễ dàng mở rộng theo chiều ngang của chúng. Qua trình sharding cũng dễ hiểu và dễ thao tác hơn so với CSDL quan hệ, nên document store có thể mở rộng nhanh và dễ dàng.
Điểm yếu
CSDL dạng lưu trữ tài liệu hy sinh các yếu tố ACID để đổi lấy sự linh hoạt. ngoại giả, việc truỵ vấn chỉ có thể được thực hành trong từng tài liệu, chẳng thể truy dữ liệu trên nhiều tài liệu khác nhau.
Nên sử dụng CSDL dạng lưu trữ tài liệu trong các trường hợp nào?
Dữ liệu phi cấu trúc hoặc không có cấu trúc
Quản lý nội dung
phân tách dữ liệu chuyên sâu
Tạo mẫu nhanh
3. CSDL dạng khoá – giá trị (Redis, Memcached)
Key-value stores là kiểu lưu trữ đơn giản nhất trong các loại CSDL NoSQL đồng thời nó cũng là kiểu lưu trữ cho tất thảy các HQT CSDL NoSQL. thường nhật, các HQT CSDL Key-value lưu trữ dữ liệu dưới dạng key (là một chuỗi độc nhất vô nhị) liên kết với value có thể ở dạngchuỗi văn bản đơn giản hoặc các tập, danh sách dữ liệu phức tạp hơn. Quá trình cữ dữ liệu thường sẽ được thực hiện ưng chuẩn key, điều này dẫn đến sự hạn chế về độ chuẩn xác.
CDSL chìa khoá – giá trị là một dạng CSDL phi quan hệ nơi mà mỗi giá trị được gán cho một key (chìa khoá) cố định, còn được biết đến như associative array – mảng liên hệ.
Một “key” là một định danh duy nhất được gán cho một giá trị. Keys có thể là bất cứ thứ gì cho phép bởi DBMS. Trong Redis, keys có thể là một hàm nhị phân lên tới 512MB
“Giá trị” có thể được lưu trữ dưới dạng blob (Là kiểu dữ liệu của một cột trong bảng RDBMS, có thể lưu ảnh lớn hoặc dữ liệu văn bảng như những tính chất.) và không cần schema định sẵn.. Các gía trị này có thể được gán bất cứ loại giá trị nào:
Số
Chuỗi giá trị
Bộ đếm
JSON, XML, HTML, PHP,
Nhị phân
Hình ảnh
Video ngắn
Danh sách
Điểm mạnh
Dạng CSDL này có rất nhiều lợi thế. Nó rất linh hoạt và có thể xử lí nhiều loại dữ liệu một cách mau chóng. Các chìa khoá được dùng để truy xuất thẳng tới các giá trị dạo, mà không cần ưng chuẩn quá trình index (quá trình kiêng kị dữ liệu và đánh giá độ chính xác của dữ liệu đó của hệ thống CSDL), giúp quá trình từng diễn ra mau chóng. Tính linh động cũng là một điểm mạnh của CSDL dạng này: lưu trữ key – value có thể được chuyển từ hệ thống này sang hệ thống khác mà không cần code lại. chung cuộc, CSDL key – value có thể mở mang theo chiều ngang dễ dàng và uổng vận hành thấp.
Điểm yếu
Tính linh hoạt của CSDL dạng key – value bị đánh đổi bởi tính chuẩn xác. Hầu như rất khó để truy xuất giá trị chuẩn xác từ CSDL dạng này vì dữ liệu được lưu trữ theo blob, nên kết quả trả về hầu như đều theo blob. Điều này gây ra khó khan khi ít số liệu hoặc cần chỉnh sửa một phần của các giá trị. rốt cục, không phải objects nào cũng có thể được cấu hình thành cặp chìa khoá – giá trị được.
Nên dùng CSDL key – value cho các trường hợp nào?
Khuyến nghị các sản phẩm / thông tin na ná
thông tin và thiết lập người dùng
Dữ liệu phi cấu trúc như review sản phẩm, bình luận của blog
Quản lý session trên diện rộng
Dữ liệu được truy xuất liền nhưng không thẳng tắp được cập nhật
4. Mô hình wide – column (Cassandra, HBase)
Mô hình wide – column là một dạng lưu CSDL phi quan hệ lưu trữ theo dạng cột. Mô hình này có vài điểm tương đồng với mô hình key – value nhưng cũng có vài thuộc tính của dạng CSDL quan hệ.
Mô hình wide – column dựa trên khái niệm keyspace thay vì schema. Một keyspace bao gồm nhiều cụm column (tương tự như table nhưng linh hoạt hơn về cấu trúc), mỗi cụm bao gồm nhiều hàng và nhiều cột riêng biệt. Mỗi hàng không cần phải có số lượng hoặc loại cột. Một timestamp quyết định phiên bản gần nhất của data.
Điểm mạnh
Loại CSDL này có cả lợi ích của CSDL quan hệ và phi quan hệ, có thể xử lí dữ liệu cấu trúc và phi cấu trúc, song song cũng dễ dàng nâng cấp. So với CSDL quan hệ, khả năng mở mang theo chiều ngang cũng dễ dàng và nhanh chóng hơn.
CSDL dạng cột có khả năng nén tốt hơn CSDL dạng dòng. song song, data set lớn có thể dễ dàng duyệt hơn. Mô hình wide – column có khả năng xử lí tốt các yêu cầu truy xuất hội tụ.
Điểm yếu
CSDL dạng cột dễ dàng update theo cụm, bù lại việc upload và update số liệu cá nhân rất khó. Cộng thêm thực tiễn là mô hình wide – column chậm hơn so với CSDL quan hệ khi xử lí các giao dịch.
Nên dùng mô hình wide – column cho trong trường hợp nào?
Xử lí các dữ liệu lớn (big data) khi tốc độ cấp thiết
Lưu trữ dữ liệu big data
Các project có quy mô lớn
CSDL dạng bộ máy từng (Elasticsearch)
![]()
Elasticsearch về chủ chốt là một bộ máy lùng và không hoàn toàn là là CSDL chuyên biệt như các loại trên, nhưng ngày càng được giới developers tận dụng để giảm thiểu độ lag khi cỡ thông tin. Elasticsearch được xem như một CSDL dạng phi quan hệ, dựa trên nền móng lưu trữ dữ liệu dạng văn kiện, thiết kế chuyên biệt để tối ưa hoá lưu trữ và bàn luận dữ liệu mau chóng.
Điểm mạnh
Elasticsearch có khả năng mở rộng cao, với schema linh hoạt và tốc độ trả về thông số lưu trữ nhanh, hỗ trợ khả năng ngần nâng cao: trên dưới full text, khuyến nghị các kết quả kiêng, và hỗ trợ các thông báo độ phức tạp.
Một trong số những tính năng ưa của Elasticsearch đó là “stemming”. Stemming là từ để chỉ kỹ thuật dùng để biến đổi 1 từ về dạng gốc (được gọi là stem hoặc root form) bằng cách đơn giản là loại bỏ 1 số ký tự nằm ở cuối được xem như biến thể của từ. thí dụ: các từ như walked , walking , walks , bằng cách bỏ đi -ed , -ing hoặc -s , chúng ta sẽ được từ nguyên gốc là walk. Một thí dụ khác trong ngày độ việc làm, một user có thể search của “paying jobs” cũng có thể sẽ tìm ra các kết quả có liên hệ tới từ “paid” và “pay”. Tính năng này hiện tại có ích với các tiếng nói phổ biến như tiếng Anh, nhưng có khả năng áp dụng cao với các ngôn ngữ khác như tiếng Việt tuy nhiên đòi hỏi độ tuỳ chỉnh cao.
Điểm yếu
Elasticsearch được sử dụng với hình thức thay thế hoặc bổ trợ cho CSDL có sẵn hơn là độc lập. Elasticsearch còn có nhược điểm là độ ổn định và bảo mật kém, không có giao thứcxác định và công nhận danh tính của một khách truy cập hoặc điều khiển đăng nhập. ngoại giả, Elasticsearch không tương trợ thanh toán.
Nên dùng các bộ máy lóng Elastisearch cho các trường hợp sau:
Cung cấp các thông tin phụ tương trợ việc ra quyết định khi từng dữ liệu
Lưu file tạm
Bài viết có sử dụng các từ ngữ chuyên ngành quản lý cơ sở dữ liệu như:
Database là một tập hợp liên kết các dữ liệu, thường đủ lớn để lưu trên một thiết bị lưu trữ như đĩa hay băng. Dữ liệu này được duy trì dưới dạng một tụ họp các tập tin trong hệ điều hành hay được lưu trữ trong các hệ quản trị cơ sở dữ liệu.
Schema là thuật ngữ để chỉ định nghĩa về cấu trúc dữ liệu. tự điển Websters định nghĩa schema là “phác thảo hoặc mường tưởng khái quát dễ hiểu về một khái niệm nào đó; Ví dụ, 5 dấu chấm là schema của số 5”.
Stemming là kỹ thuật dùng để biến đổi 1 từ về dạng gốc (được gọi là stem hoặc root form) bằng cách cực kỳ đơn giản là loại bỏ 1 số ký tự nằm ở cuối từ mà nó nghĩ rằng là biến thể của từ.
Key – value chỉ các CSDL key-value lưu trữ dữ liệu dưới dạng key – chìa khoá (một chuỗi độc nhất) liên kết với value – giá trị có thể ở dạng chuỗi văn bản đơn giản hoặc các tập, danh sách dữ liệu phức tạp hơn.
Relational database còn được biết đến như Relational Database Management System (Hệ thống quản lý cơ sở dữ liệu quan hệ) Trong RDBMS, dữ liệu được trình diễn bởi các hàng. Relational Database là cơ sở dữ liệu được dùng phổ thông nhất. Nó chứa các bảng và mỗi bảng có Primary Key riêng. Bởi vì các bảng này được tổ chức chặt nên việc truy cập dữ liệu trở nên dễ dàng hơn trong RDBMS.
Nonrelational database chỉ những cơ sở dữ liệu không dùng mô hình dữ liệu quan hệ để quản lý dữ liệu trong lĩnh vực phần mềm, còn gọi là CSDL không buộc ràng.
High scalability nghĩa là “Khả năng mở mang cao“. Ở đây chỉ khả năng của hệ thống máy chủ, hạ tầng mạng, băng thông có thể nâng cấp, chịu tải lớn, mở rộng nhanh chóng khi có nhu cầu.
Sharding là một tiến trình lưu giữ các bản ghi dữ liệu qua nhiều thiết bị để đáp ứng đề nghị về sự gia tăng dữ liệu. Khi kích cỡ của dữ liệu tăng lên, một thiết bị đơn (1 database hay 1 bảng) chẳng thể đủ để lưu giữ dữ liệu. Sharding giải quyết vấn đề này với việc mở rộng phạm vi theo bề ngang (horizontal scaling). Với Sharding, bạn bổ sung thêm nhiều thiết bị để hỗ trợ cho việc gia tăng dữ liệu và các đề nghị của các hoạt động đọc và ghi.
Horizontal/ vertical scaling theo thứ tự là nâng cấp mở rộng theo chiều ngang, tức thị nâng số máy chủ, trái lại vertical scaling là nâng cấp dọc, là bổ sung thêm tài nguyên như CPU, RAM vào máy chủ có sẵn.
Metadata là dạng định nghĩa dữ liệu như: bảng, cột, một mỏng, các luật doanh nghiệp hay những lệ luật biến đổi. Metadata bao quát bít tất các mặt của kho dữ liệu.
Query có nghĩa là tầm nã. Đây bản tính là một câu lệnh SQL được xây dùng để tổng hợp dữ liệu từ các bảng nguồn. Có nhiều loại query khác nhau như crosstab, action, union và data – definition.
Hy vọng bài viết sẽ giúp các bạn có cái nhìn tổng thể về các loại CSDL và các trường hợp phù hợp để dùng chúng!




Không có nhận xét nào:
Đăng nhận xét