Tải bản đầy đủ - 0 (trang)
b. Các đặc điểm của NoSQL

b. Các đặc điểm của NoSQL

Tải bản đầy đủ - 0trang

High Scalability: Gần như khơng có một giới hạn cho dữ liệu và người

dùng trên hệ thống.

- High Availability: Do chấp nhận sự trùng lặp trong lưu trữ nên nếu một

node (commodity machine) nào đó bị chết cũng khơng ảnh hưởng tới

toàn bộ hệ thống.

- Atomicity: Độc lập data state trong các operation.

- Consistency: chấp nhận tính nhất quán yếu, có thể khơng thấy ngay

được sự thay đổi mặc dù đã cập nhật dữ liệu.

- Durability: dữ liệu có thể tồn tại trong bộ nhớ máy tính nhưng đồng

thời cũng được lưu trữ lại đĩa cứng.

- Deployment Flexibility: việc bổ sung thêm/loại bỏ các node, hệ thống

sẽ tự động nhận biết để lưu trữ mà không cần phải can thiệp bằng tay.

Hệ thống cũng khơng đòi hỏi cấu hình phần cứng mạnh, đồng nhất.

- Modeling flexibility: Key-Value pairs, Hierarchical data (dữ liệu cấu

trúc), Graphs.

- Query Flexibility: Multi-Gets, Range queries (load một tập giá trị dựa

vào một dãy các khóa).

Một số khái niệm trong NoSQL:

● Fields – tương đương với khái niệm Columns trong SQL.

● Document – thay thế khái niệm row trong SQL. Đây cũng chính là khái

niệm làm nên sự khác biệt giữa NoSQL và SQL, 1 document chứa số

cột (fields) khơng cố định trong khi 1 row thì số cột(columns) là định

sẵn trước.

● Collection – tương đương với khái niệm table trong SQL. Một

collection là tập hợp các document. Điều đặc biệt là một collection có

thể chứa các document hồn tồn khác nhau.

● Key-value – cặp từ khóa – giá trị được dùng để lưu trữ dữ liệu trong

NoSQL

● Cursor – tạm dịch là con trỏ. Chúng ta sẽ sử dụng cursor để lấy dữ liệu

từ database.

Ưu điểm của NoSQL:

● Open source: hầu hết các sản phẩm nguồn mở đưa ra cho những người

phát triển với nhiều lợi ích to lớn, đặc biết là việc sử dụng miễn phí.

● Khả năng mở rộng linh hoạt: do khơng bị ràng buộc chặt về các mối

quan hệ, cấu trúc lưu trữ nên khả năng mở rộng của NoSQL rất linh

động.

-



-



-



17



Các CSDL NoSQL khác nhau cho những dự án khác nhau: mỗi loại

CSDL NoSQL cụ thể sẽ là giải pháp phục vụ cho một hoặc một vài vấn

đề cụ thể.

● NoSQL được các hãng lớn sử dụng: các công ty như Amazon, BBC,

Facebook và Google dựa vào các CSDL NoSQL.

● NoSQL phù hợp với công nghệ đám mây: Những yêu cầu về lưu trữ

của công nghệ đám mây với NoSQL là một sự trùng khớp tự nhiên.

Nhược điểm của NoSQL:

● Hỗ trợ không đồng đều cho các doanh nghiệp: trong khi các nhà cung

cấp chủ chốt của các RDBMS như SQL Server, Oracle, IBM,… thường

đưa ra sự hỗ trợ tốt cho khách hàng thì các nhà cung cấp nguồn mở mới

thành lập không thể được mong đợi sẽ cung cấp hỗ tốt hơn.

● Vấn đề lớn của NoSQL là thiếu về độ chín muồi và các vấn đề về tính

khơng ổn định, trong khi đó tính chín muồi, hỗ trợ đầy đủ chức năng và

tính ổn định của các RDBMS được thiết lập đã từ lâu.

● tính mới mẻ của NoSQL có nghĩa là khơng có nhiều lập trình viên và

người quản trị biết công nghệ này. Như vậy sẽ rất khó khăn cho các

cơng ty tìm người có hiểu biết phù hợp.

● mỗi CSDL NoSQL có các giao diện lập trình ứng dụng API riêng, các

giao diện truy vấn riêng… Sự thiếu hụt các tiêu chuẩn sẽ gây ra rất

nhiều khó khăn khi chuyển từ một nhà cung cấp này sang một nhà cung

cấp khác nếu có nhu cầu.





-



2. Phân loại NoSQL

-



a.

-



Có bốn loại chung (loại phổ biến nhất) của cơ sở dữ liệu NoSQL. Mỗi loại

đều có các thuộc tính và giới hạn riêng. Khơng có một giải pháp duy nhất

nào tốt hơn tất cả các giải pháp khác, tuy nhiên có một số cơ sở dữ liệu tốt

hơn để giải quyết các vấn đề cụ thể.



Key-value stores

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 cả các HQTCSDL NoSQL. Thông

thường, các HQT CSDL Key-value lưu trữ dữ liệu dưới dạng key (là một

chuỗi duy nhất) liên kết với value 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. Quá trình tìm kiếm dữ liệu

thường sẽ được thực hiện thông qua key, điều này dẫn đến sự hạn chế về độ

chính xác.



18



-



-



-



Với kiểu lưu trữ này, ta sẽ rất dễ dàng và nhanh chóng truy xuất được thông

tin của một người thông qua key, nhưng không hề đơn giản trong việc xử lý

những dữ liệu phức tạp.

Như vậy, với sự đơn giản của cách lưu trữ dạng Key-value làm cho các

CSDL loại này rất phù hợp với các ứng dụng cần truy xuất nhanh và khả

năng mở rộng cao, chẳng hạn như là các quản lý các phiên giao dịch

(session) hoặc quản lý các thông tin về giỏ hàng vì trong trường hợp này,

việc biết được ID của phiên giao dịch hoặc ID của khách hàng là điều rất cần

thiết. Hay việc quản lý thông tin của sản phẩm bao gồm những thông tin cơ

bản, các sản phẩm liên quan, đánh giá,… sẽ được lưu trữ dưới dạng key là

mã sản phẩm chẳng hạn và value là các thơng tin còn lại của sản phẩm cần

lưu trữ. Điều này, cho phép ta truy xuất được tất cả các thông tin về một sản

phẩm chỉ thông qua mã sản phẩm cực kỳ nhanh.

Ưu điểm:

● Flexible data modeling: Vì mơ hình dữ liệu rất linh hoạt và khơng

tn theo bất kỳ cấu trúc dữ liệu nào, nên nó có thể cung cấp một mơ

hình dữ liệu để phù hợp với các yêu cầu của ứng dụng. Có thể mở

rộng theo chiều ngang.

● Các keys được dùng để truy xuất thẳng tới các giá trị tìm kiếm, mà

khơng cần thơng qua q trình index (q trình tìm kiếm 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ìm kiếm diễn ra nhanh chóng.

● High performance: key-value database khơng cần thực hiện các phép

tốn như: join, union, lock,… Do đó, hiệu năng sẽ tốt hơn so với cơ sở

dữ liệu quan hệ.



19



Có thể sử dụng key-value database với các máy chủ phân tán. Do đó

dữ liệu có thể được phân tán qua các máy chủ để tránh mất dữ liệu tại

1 điểm.

● Việc tìm kiếm trở lên dễ dàng và nhanh chóng khi biết giá trị key của

đối tượng, khơng cần tìm kiếm thông qua các cột hoặc các bảng.

● CSDL key – value có thể mở rộng theo chiều ngang dễ dàng và chi

phí vận hành thấp.

Nhược điểm:

● Tính linh hoạt của CSDL dạng key – value bị đánh đổi bởi tính chính

xác. Hầu như rất khó để truy xuất giá trị chính 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 báo cáo số liệu hoặc cần chỉnh sửa

một phần của các giá trị.

● Bởi vì q trình tìm kiếm thơng qua key, điều này dẫn đến sự hạn chế

về độ chính xác.

Một vài cơ sở dữ liệu key-value phổ biến là Riak, Redis(thường dùng phía

server), memcached, Berkeley DB, HamsterDB, Amazon DynamoDB(mã

nguồn đóng), Project Voldemort và Couchbase.





-



-



Document Oriented database



b.

-



-



CSDL Document được thiết kế để quản lý và lưu trữ dữ liệu ở dạng

document. Những document này được mã hóa về các dạng chuẩn như là

XML, JSON (Javascript Option Notation) hay BSON (Binary JSON).

Khác với các kiểu lưu trữ dạng Key-value, giá trị của cột trong các CSDL

document chứa dữ liệu bán cấu trúc (Semi-Structured Data), đặc biệt là

cặp thuộc tính name (key) – value. Một điểm khác nữa so với các kiểu lưu

trữ dữ liệu dạng Key-value đơn giản là cả key và value đều có thể tìm

kiếm trong CSDL Document.



20



-



-



-



c.

-



CSDL Document phù hợp cho việc lưu trữ và quản lý tập dữ liệu có kích

thước lớn như là tài liệu văn bản, tin nhắn, cũng như biểu diễn một thực

thể CSDL như là Product hay Customer (tài liệu khái niệm trong XML).

Ưu điểm:

● Với document database, việc tìm kiếm trở lên chính xác hơn và nhanh

chóng khi cả key và value đều có thể tìm kiếm trong CSDL.

● Với cách lưu trữ ở dạng JSON, BSON hoặc XML, thì CSDL

document là sự lựa chọn phù hợp.

● Có khả năng mở rộng theo chiều ngang và có thể lưu bất kỳ

collection nào bạn muốn.

Nhược điểm:

● Khơng đảm bảo tính tồn vẹn của dữ liệu.

● Khơng đảm bảo được tính ACID

● Khơng phù hợp cho các dữ liệu kết nối với nhau.

● Query model limited to keys

Một số cơ sở dữ liệu Document phổ biến mà chúng ta hay gặp là:

MongoDB, CouchDB, Terastore, OrientDB, RavenDB.



Column-oriented databases (column-family)

Column Family được biết đến rộng rãi nhất qua sự triển khai BigTable của

Google. Nhìn bề ngoài, chúng khá giống với CSDL quan hệ nhưng thực tế

là hoàn toàn khác. Một số sự khác biệt dễ thấy nhất là việc lưu trữ dữ liệu

theo dòng đối với các HQT CSDL quan hệ với việc lưu trư dữ liệu theo cột

của các HQT CSDL Conlumn Family. Và các tư tưởng của cả hai loại

CSDL này cũng hoàn tồn khác nhau. Chúng ta khơng thể áp dụng cùng



21



-



-



một giải pháp mà chúng ta đã sử dụng trong CSDL quan hệ vào CSDL

Conlumn Family. Bởi vì, CSDL Column Family là các CSDL phi quan hệ.

Với các CSDL Column Family, chúng ta cần quan tâm đến các khái niệm

sau:

● Column family (họ cột): Một column family là cách thức dữ liệu

được lưu trữ trên đĩa. Tất cả dữ liệu trong một cột sẽ được lưu trên

cùng một file. Một column family có thể chứa super column hoặc

column.

● Super column (siêu cột): Một super column có thể được dùng như

một dictionary (kiểu từ điển). Nó là một column có thể chứa những

column khác (mà không phải là super column).

● Column (cột): Một column là một bộ gồm tên, giá trị và dấu thời gian

(thông thường chỉ quan tâm tới key-value).

Column và super column trong column family database dùng thay thế

nhau, có nghĩa là chúng sẽ là 0 byte nếu chúng không có chứa dữ liệu.

Khơng giống như một bảng, thứ duy nhất chúng ta cần xác định trong

column family database tên cột và các tùy chọn chính (khơng có lược đồ cố

định).



22



Row key: mỗi dòng sẽ có một định danh row key duy nhất. Nó được

sử dụng để nhận biết dữ liệu nằm ở các column của row nào.

● Column: mỗi một column chứa cặp name/value và timestamp.

● Name: tên của cặp name/value

● Value: giá trị của cặp name/value

● Timestamp: Cung cấp ngày đã được lưu.

CSDL Column Family được thiết kế để chạy trên một số lượng lớn các

máy, và lưu trữ một lượng dữ liệu cực lớn. Chúng ta không thể lưu trữ một

lượng lớn dữ liệu trong cơ sở dữ liệu quan hệ vì chắc chắn chúng sẽ nhanh

chóng bị sụp đổ hoặc là chết rất nhanh về kích thước của dữ liệu và những

truy vấn đó được các CSDL Column Family xử lý một cách dễ dàng. Các

CSDL Column Family loại bỏ các khái niệm trừu tượng, những thứ làm

cho nó cứng nhắc khi chạy trên một cụm máy.





-



23



-



-



-



Ưu điểm:

● Tiết kiệm được bộ nhớ.

● Query nhanh hơn row store khi có lượng dữ liệu lớn.

● một số câu query thực hiện rất nhanh . Ví dụ, tính tổng lương của tất

cả các nhân viên trong công ty. Vì dữ liệu được lưu trữ theo cột, nên

việc tính tổng chỉ cần dựa vào cột lương của nhân viên để tính.

● Khả năng nén dữ liệu: Column Store sẽ có khả năng nén dữ liệu dễ

dàng vì được lưu theo cột, các cột thì lại chỉ theo một kiểu dữ liệu

cụ thể như char, int, bigint,... Tùy vào định dạng mà sẽ có kiểu nén

thích hợp.

● Parallel Processing: Column Store hỗ trợ, hay nói cách khác là rất

thích hợp với việc query song song, hay là nhiều process cũng thực

hiện query. Ví dụ như khi bạn cần đưa ra tel và address của user

Hiếu. Khi bạn đã biết id là 1 thì bạn có 1 process chạy song song

query trên 2 block, 1 trên block lưu tel và 1 trên block lưu address.

Thời gian query giảm xuống còn 1 nửa.

Nhược điểm:

● Việc xây dụng được column store là khó hơn rất nhiều vì để tận

dụng được điểm mạnh của column store thì các hệ thống phải xây

dựng rất nhiều việc liên quan như: khả năng nén dữ liệu, phân chia

dữ liệu, query song song, hệ thống ổ cứng... Vì chỉ có như vậy mới

phát huy được hết sức mạng của column store.

● Một số trường hợp câu query có thể bị chậm khi cần trả về thông tin

của một hoặc nhiều row trong bảng.

● Không phù hợp cho các dữ liệu kết nối với nhau.

Một số sản phẩm tiêu biểu của Column Store Database là: Bigtable,

Cassandra, Hbase, Vertica, Druid, Accumulo, Hypertable,…



Graph databases



d.

-



Cơ sở dữ liệu đồ thị là một cơ sở dữ liệu dạng đồ thị sử dụng các cấu trúc

đồ thị với các nút (nodes), các mối quan hệ (relationships), các thuộc tính

(properties) để mơ tả và lưu trữ dữ liệu.



24



-



-



-



-



Chúng ta có thể thực hiện những truy vấn phức tạp hơn như lọc trên các

thuộc tính quan hệ, xem xét trọng số của người đó, .. Graph Database

thường được sử dụng để giải quyết các vấn đề về mạng.

Trong thực tế, hầu hết các trang web mạng xã hội đều sử dụng một số hình

thức của graph database để làm những việc mà chúng ta đã biết như: kết

bạn, bạn của bạn , …

Ưu điểm:

● Các câu query thực sự rất nhanh khi tìm kiếm mối quan hệ giữa các

nodes. CSDL này là hỗ trợ điều hướng nhanh hơn giữa các các mối

quan hệ . Phù hợp với các ứng dụng mạng xã hội, các chức năng

suggest, recommend, quản lý các mạng lưới(network, traffic...) ...

● Performance là ưu điểm rất lớn của graph database so với relational

database và Nosql database. Khi dữ liệu trở nên lớn cùng với việc sử

dụng nhiều câu lệnh join sẽ khiến performance trở nên rất tệ, trong

khi thì graph database với cách query dữ liệu chỉ focus vào 1 phân

khu của graph có chứa các dữ liệu liên quan nên performance khơng

thay đổi nhiều.

● Chúng ta có thể thêm vào các nodes, các relationships, các subgraph

mà không làm ảnh hưởng đến dữ liệu cũ, các query cũ.

Nhược điểm:

● Phải sử dụng các API có sẵn.

● CSDL graph khơng hữu ích cho các trường hợp sử dụng nghiệp vụ

vì chúng khơng hiệu quả trong việc xử lý khối lượng giao dịch lớn.

Bởi vì chúng khơng được tối ưu hố để lưu trữ và truy xuất các thực

25



thể như khách hàng hoặc nhà cung cấp, để làm được điều này cần

phải kết hợp một CSDL graph với CSDL quan hệ hoặc NoSQL.

Một số sản phẩm tiêu biểu của graph database là: Neo4J, Sones,

AllegroGraph, Core Data, DEX, FlockDB, InfoGrid, OpenLink Virtuoso,





-



a.



3. Các hệ quản trị cơ sở dữ liệu NoSQL phổ biến hiện nay

MongoDB

-



-



-



-



MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL

hàng đầu, được hàng triệu người sử dụng. MongoDB được viết bằng C+

+.

Ngoài ra, MongoDB là một cơ sở dữ liệu đa nền tảng, hoạt động trên các

khái niệm Collection và Document, nó cung cấp hiệu suất cao, tính khả

dụng cao và khả năng mở rộng dễ dàng.



MongoDB hoạt động dưới một tiến trình ngầm service, luôn mở một

cổng (Cổng mặc định là 27017) để lắng nghe các yêu cầu truy vấn, thao

tác từ các ứng dụng gửi vào sau đó mới tiến hành xử lý.

Mỗi một bản ghi của MongoDB được tự động gắn thêm một field có tên

“_id” thuộc kiểu dữ liệu ObjectId mà nó quy định để xác định được tính

duy nhất của bản ghi này so với bản ghi khác, cũng như phục vụ các thao

26



-



-



-



-



b.



tác tìm kiếm và truy vấn thơng tin về sau. Trường dữ liệu “_id” luôn được

tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất

cao nhất.

Mỗi khi có một truy vấn dữ liệu, bản ghi được cache (ghi đệm) lên bộ

nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà khơng cần

phải đọc từ ổ cứng.

Khi có yêu cầu thêm/sửa/xóa bản ghi, để đảm bảo hiệu suất của ứng dụng

mặc định MongoDB sẽ chưa cập nhật xuống ổ cứng ngay, mà sau 60 giây

MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ

cứng.

Ưu điểm:

● Ít schema hơn: Vì schema được sinh ra là để nhóm các đối tượng vào

1 cụm, dễ quản lý. Ví dụ như tạo 1 schema tên là Students chẳng hạn

thì chỉ có những gì liên quan đến student thì mới được cho vào

schema này. Trong khi đó trong mongodb thì chỉ 1 collection ta có thể

chứa nhiều document khác nhau . Với mỗi document thì số trường,

nội dung, kích thước lại có thể khách nhau.

● Cấu trúc của một đối tượng rõ ràng.

● Khơng có các Join phức tạp.

● Khả năng mở rộng cực lớn: việc mở rộng dữ liệu mà không phải lo

đến các vấn đề như khóa ngoại, khóa chính, kiểm tra ràng buộc, ...

MongoDB cho phép thực hiện replication và sharding nên việc mở

rộng cũng thuận lợi hơn.

● Sử dụng bộ nhớ trong để lưu giữ cửa sổ làm việc cho phép truy cập

dữ liệu nhanh hơn. Việc cập nhật được thực hiện nhanh gọn nhờ

update tại chỗ (in-place).

Nhược điểm:

● Dữ liệu được caching, lấy RAM làm trọng tâm hoạt động vì vậy khi

hoạt động yêu cầu một bộ nhớ RAM lớn.

● mọi thay đổi về dữ liệu mặc định đều chưa được ghi xuống ổ cứng

ngay lập tức vì vậy khả năng bị mất dữ liệu từ nguyên nhân mất điện

đột xuất là rất cao.

● Mongodb khơng có cơ chế transaction.



Cassandra



27



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

b. Các đặc điểm của NoSQL

Tải bản đầy đủ ngay(0 tr)

×