Cốt lõi của mô hình điện toán đám mây, tạo ra sự khác biệt giữa nó với mô hình cơ sở dữ liệu quan hệ chính là mô hình lưu trữ dữ liệu kiểu mới: NoSQL.. Điện toán đám mây 1.1 Giới thiệu Đ
Trang 2Cơ sở dữ liệu nâng cao Mục lục
Mục lục
I Giới thiệu chủ đề 1
1 Bài toán 1
2 Lịch sử 1
II Các vấn đề liên quan 2
1 Điện toán đám mây 2
1.1 Giới thiệu 2
1.2 Kiến trúc 3
2 Could Database 4
2.1 Deployment Model 4
2.2 Data Model 6
III NoSQL 7
1 Định nghĩa 7
2 Kiến trúc 7
3 Tích chất 7
4 Phân loại 9
4.1 Tổng quan 9
4.2 Logical Data Models 10
IV Demo mô hình NoSQL 22
1 Giới thiệu MongoDB 22
2 Đặc điểm của MongoDB 23
3 Cài đặt Mongo DB và driver kết nối với PHP, cách sử dụng MongoDB Shell Script 24
4 Demo module web xây dựng bằng php với mongo DB 25
V Nhận xét và đánh giá 29
Trang 31 Bài toán
Trong những năm gần đây, cùng với sự phát triển mạnh của công nghệ nhu cầu sử dụngcác dịch vụ, chia sẻ thông tin trên mạng tăng mạnh mẽ Cùng với đó là nhu cầu lưu trữ dữ liệuvới kích thước khổng lồ và dường như mô hình cơ sở dữ liệu quan hệ (RMDBs) không còn đápứng được nhu cầu về lưu trữ thông tin Yêu cầu đặt ra là phải xây dựng một mô hình lưu trữ cơ
sở dữ liệu đáp ứng được các yêu cầu như lưu trữ dữ liệu với kích thước lớn (lên đến hàngpetabytes), truy cập nhanh, dễ dàng mở rộng quy mô, v.v Như một tất yếu, mô hình điện toánđám mây ra đời có thể đáp ứng các yêu cầu trên Cốt lõi của mô hình điện toán đám mây, tạo ra
sự khác biệt giữa nó với mô hình cơ sở dữ liệu quan hệ chính là mô hình lưu trữ dữ liệu kiểu
mới: NoSQL.
NoSQL còn có nghĩa là Non-Relational (NoRel) - không ràng buộc Tuy nhiên, thuật ngữ đó
ít phổ dụng hơn và ngày nay người ta thường dịch NoSQL thành "Not Only SQL" - Không chỉSQL NoSQL ý chỉ đến 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
2 Lịch sử
Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm tên gọi chung chocác cơ sở dữ liệu quan hệ mã nguồn mở nhỏ (Lightweight open source relational database)nhưng không sử dụng SQL cho truy vấn Vào năm 2009, Eric Evans, nhân viên của Rackspacegiới thiệu lại thuật ngữ NoSQL trong một hội thảo về cơ sở dữ liệu nguồn mở phân tán Thuậtngữ NoSQL đánh dấu bước phát triển của thế hệ cơ sở dữ liệu mới: phân tán không ràng buộc –distributed non-relational
Trang 4Các vấn đề liên quan Cơ sở dữ liệu nâng cao
II Các vấn đề liên quan
1 Điện toán đám mây
1.1 Giới thiệu
Điện toán đám mây là một dẫn xuất của điện toán như một dịch vụ hơn là một sản phẩm,bằng cách chia sẻ nguồn tài nguyên, phần mềm và thông tin được cung cấp từ một tập hợp cácmáy tính hoặc một số thiết bị khác trên mạng máy tính (điển hình là mạng Internet).Điện toánđám mây như một thành phần thương mại cho công nghệ; cung cấp sự tính toán, phần mềm, truynhập hay lưu trữ dữ liệu mà người dùng cuối cùng không cần biết về vị trí địa lý hay cấu hìnhcủa hệ thống Giống như một mạng điện lưới, người dùng tiêu thụ điện mà không cần biết hoặchiểu các thành phần hoặc kiến trúc của dịch vụ đó
Có thể hiểu điện toán đám mây là một mô hình dẫn xuất của mô hình dịch vụ công nghệthông tin dựa trên các giao thức trên Internet và đây là một mô hình đặc trưng cho khả năng mởrộng và thường các nguồn dữ liệu là nguồn dữ liệu logic Điện toán đám mây là một sản phẩmphụ, kết quả của sự phát triển các nguồn dễ dàng truy cập từ xa bằng máy tính được cung cấptrên Internet được truy cập bằng những công cụ dựa trên nền tảng Web-base hoặc người dùng cóthể truy cập sử dụng trình duyệt Web, ứng dụng cho phép người dùng sử dụng tài nguyên tương
tự như các ứng dụng được cài đặt trên máy tính người dùng Điện toán đám mây cung cấp cácdịch vụ thông qua mạng Internet do đó dễ dàng được truy cập, sử dụng bằng trình duyệt Web,hoặc các phần mềm cài đặt trên máy tính cá nhân, điện thoại và kết nối với các phần mềm dịch
vụ, dữ liệu được lưu trữ được cài đặt trên máy chủ
Trang 51.2 Kiến trúc
Mô hình điện toán đám mây gồm có một mặt trước (front end) và một mặt sau (back
end) Hai thành phần này được kết nối thông qua một mạng, trong đa số trường hợp là Internet.Phần mặt trước là phương tiện chuyên chở qua đó người dùng tương tác với hệ thống; phần mặtsau chính là đám mây Phần mặt trước gồm có một máy tính khách hoặc mạng máy tính củadoanh nghiệp và các ứng dụng được sử dụng để truy cập vào đám mây Phần mặt sau cung cấpcác ứng dụng, các máy tính, các máy chủ và lưu trữ dữ liệu để tạo ra đám mây của các dịch vụ
Khái niệm điện toán đám mây được xây dựng trên các tầng, mỗi tầng cung cấp một mức
chức năng riêng Sự phân tầng này của các thành phần đám mây đã cung cấp một phương tiệncho các tầng của điện toán đám mây để trở thành một loại hàng hóa như điện, dịch vụ điện thoạihoặc khí tự nhiên Hàng hóa mà điện toán đám mây bán là khả năng tính toán với chi phí và phítổn thấp hơn cho người dùng Điện toán đám mây đã sẵn sàng để trở thành dịch vụ siêu tiện íchtiếp theo
Các tầng đám mây được cung cấp:
Tầng cơ sở hạ tầng là nền tảng của đám mây Nó gồm có các tài sản vật lý — các máy chủ, các thiết bị mạng, các ổ đĩa lưu trữ, v.v Cơ sở hạ tầng là một dịch vụ (IaaS) có các nhà
cung cấp như IBM® Cloud Khi sử dụng IaaS bạn thực tế không kiểm soát cơ sở hạ tầng nằmdưới, nhưng bạn có quyền kiểm soát các hệ điều hành, lưu trữ, triển khai các ứng dụng và ở mộtmức độ hạn chế, có quyền kiểm soát việc lựa chọn các thành phần mạng Dịch vụ in theo yêu cầu(POD) là một ví dụ về các tổ chức có thể hưởng lợi từ IaaS Mô hình POD được dựa trên việcbán sản phẩm có khả năng tùy chỉnh Các POD cho phép các cá nhân mở cửa hàng và bán thiết
kế của các sản phẩm Các chủ cửa hàng có thể tải lên nhiều hay ít thiết kế tùy theo khả năng sángtạo của họ; có hàng ngàn lần tải lên Với các khả năng lưu trữ đám mây, một POD có thể cungcấp không gian lưu trữ không hạn chế
Tầng giữa là nền tảng hệ thống Nó cung cấp cơ sở hạ tầng của ứng dụng Nền tảng hệ
thống là một dịch vụ (PaaS) cung cấp sự truy cập đến các hệ điều hành và các dịch vụ có liênquan Nó cung cấp một cách để triển khai các ứng dụng lên đám mây bằng cách sử dụng cácngôn ngữ lập trình và các công cụ do nhà cung cấp hỗ trợ Bạn không cần phải quản lý hoặckiểm soát cơ sở hạ tầng nằm dưới, nhưng bạn có quyền điều khiển các ứng dụng đã triển khai và
ở một mức độ nào có quyền điều khiển ứng dụng sử dụng các cấu hình môi trường trên máy tínhchủ PaaS có các nhà cung cấp như là Elastic Compute Cloud (EC2) của Amazon Nhà phầnmềm doanh nhân nhỏ là một hoạt động kinh doanh lý tưởng đối với PaaS Với nền tảng hệ thống
đã chọn lọc kỹ, có thể tạo ra các sản phẩm đẳng cấp thế giới mà không thêm gánh nặng cho hệthống đang chạy trong công ty
Tầng trên cùng là tầng ứng dụng, tầng mà hầu hết mọi người xem như là đám mây Các
ứng dụng chạy ở đây và được cung cấp theo yêu cầu của những người dùng Phần mềm là mộtdịch vụ (SaaS) có các nhà cung cấp như Google Pack Google Pack bao gồm các ứng dụng, cáccông cụ có thể sử dụng được qua Internet, như Calendar, Gmail, Google Talk, Docs và nhiều hơnnữa
Điện toán đám mây thường bị lẫn lộn với điện toán lưới, điện toán theo yêu cầu hay điệntoán tự trị Đâu là sự khác nhau giữa chúng: Điện toán lưới (grid computing) là một dạng củađiện toán phân tán, trong đó tồn tại một siêu máy tính ảo, là sự bao gồm một tập hợp các máytính đơn liên kết với nhau và hoạt động phối hợp để thực hiện các tác vụ cực lớn, tác vụ này cóthể được chia nhỏ để thực hiện song song trên những máy tính đơn của tập hợp máy tính đó.Điện toán theo yêu cầu (utility computing) là khối tài nguyên máy tính như bộ nhớ, bộ xử lýtrong vai trò một dịch vụ riêng biệt và cụ thể tương tự với các công trình hạ tầng kỹ thuật truyền
Trang 6Các vấn đề liên quan Cơ sở dữ liệu nâng cao
thống chẳng hạn như điện lực hay mạng điện thoại Điện toán tự trị là những hệ thống có khảnăng tự vận hành, quản lý và xử lý những vấn đề xảy ra trong quá trình vận hành Điện toán đámmây được nhìn nhận như là một bước phát triển tự nhiên tiếp theo từ những mô hình trên Những
hệ thống điện toán đám mây hiện nay đều có khả năng tự trị và có khả năng xử lý những tác vụlớn như điện toán lưới, và riêng biệt cụ thể cho một yêu cầu nào đó như điện toán theo yêu cầu
Virtual Machine Image – nền tảng đám mây cho phép người dùng cài đặt các máy ảo trong mộtkhoảng thời gian giới hạn và có thể chạy các cơ sở dữ liệu trên các máy ảo đó Người dùng có
Trang 7dụng các mấy ảo có sẵn bao gồm sự cài đặt tối ưu cho các cơ sở dữ liệu Ví dụ như Oracle cungcấp những máy ảo cài đặt sẵn cùng với cơ sở dữ liệu Oracle Database 11g Enterprise Edition onAmazon EC2.
Trình giám sát máy ảo (VMM- virtual machine monitor) cung cấp phương tiện để sửdụng đồng thời các tiện ích điện toán đám mây (xem Hình 2) VMM là một chương trình trênmột hệ thống máy tính chủ cho phép một máy tính hỗ trợ nhiều môi trường thi hành giống hệtnhau Từ quan điểm của người dùng, hệ thống này là một máy tính độc lập, hoàn toàn cách biệtvới những người dùng khác Trong thực tế, người dùng đang được phục vụ bởi cùng một máytính Một máy ảo là một hệ điều hành (OS) đang được quản lý bởi một chương trình điều khiểnnằm dưới cho phép nó xuất hiện giống như là nhiều hệ điều hành Trong điện toán đám mây,VMM cho phép những người dùng giám sát và do đó quản lý các khía cạnh của quá trình như làtruy cập dữ liệu, lưu trữ dữ liệu, mã hóa, đánh địa chỉ, cấu trúc liên kết và di chuyển tải côngviệc
Hình 2 – Trình giám sát máy ảo
Database as Service – một số nền tảng đám mây hướng tới lựa chọn sử dụng các cơ sở dữliệu như một dịch vụ mà không cần sử dụng các máy ảo Trong cài đặt, các ứng dụng chủ khôngphải cài đặt hoặc chứa dữ liệu trên nó Thay vào đó, dịch vụ cung cấp dữ liệu được tạo ra chịutrách nhiệm cho việc cài đặt và lưu trữ dữ liệu và các ứng dụng chủ sẽ truy cập, lấy dữ liệu hoặc
sử dụng sử liệu từ các dịch vụ cung cấp dữ liệu này Ví dụ, Amazon Web Services cung cấp 2dịch vụ dữ liệu như là một phần dịch vụ điện toán đám mây của mình, SimpleDB lưu trữ NoSQLkey-value và Amazon Relational Database Service là dịch vụ cơ sở dữ liệu nền tảng SQL cùngvới giao diện MySQL
Lựa chọn thứ 3 là quản lý máy chủ cơ sở dữ liệu trên những đám mây, tại đây cơ sở dữliệu không quan niệm như dịch vụ mà nhà cung cấp dịch vụ đám mây cung cấp và quản lý nhưmột ứng dụng Ví dụ, nhà cung cấp dịch vụ đám mây Rackspace hướng tới quản lý máy chủ cho
cơ sở dữ liệu MySQL
2.2 Data Model
SQL Databases, như Oracle Database, Microsoft SQL Server và MySQL là một dạng cơ
sở dữ liệu chạy trên đám mây SQL database rất khó để mở rộng kích thước, có nghĩa không phùhợp với môi trường đám mây mặc dù dịch vụ cơ sở dữ liệu đám mây cơ bản dựa trên SQL đãđược nghiên cứu và cố gắng khắc phục nhược điểm này
Trang 8Các vấn đề liên quan Cơ sở dữ liệu nâng cao
NoSQL Databases, như Apache Cassandra, CouchDB và MongoDB là dạng khác của cơ sở dữliệu cũng chạy trên nền tảng đám mây Cơ sở dữ liệu NoSQL được xây dựng để phục vụ việcđọc, viết hoặc tải dữ liệu lớn và có khả năng thay đổi kích thước hệ thống một cách dễ dàng vàphù hợp với nền tảng đám mây hơn Tuy nhiên, hầu hết các ứng dụng hiện tại được xây dựngxung quanh một mô hình dữ liệu SQL, do đó, làm việc với cơ sở dữ liệu NoSQL thường đòi hỏiphải viết lại hoàn toàn mã ứng dụng
Phân loại nhà cung cấp Cloud database dựa trên giải pháp triển khai và mô hình dữ liệu
Xeround Cloud Database - MySQL front-end [2]
EnterpriseDB Postgres Plus Cloud Database [16]
NoSQL Data
Model
CouchDB on Amazon EC2 [17]
Hadoop on Amazon EC2 [18]
Apache Cassandra on Amazon EC2 [19]
Neo4J on Amazon EC2 [20] or Microsoft Azure [21]
MongoDB on Amazon EC2 [22] or Microsoft Azure [23]
Amazon SimpleDB
Database.com by SalesForce [24]
Google App Engine Datastore
CouchDB Hosted Database [25]
MongoDB Database as a Service (several options) [26]
Trang 92 Kiến trúc
Các hệ quản trị cơ sở dữ liệu quan hệ (RDBMs) hiện tại đã bộc lộ những yếu kém nhưviệc đánh chỉ mục một lượng lớn dữ liệu, phân trang, hoặc phân phối luồng dữ liệu đa phươngtiện (phim, ảnh, nhạc, v.v.) Cơ sở dữ liệu quan hệ được thiết kế cho những mô hình dữ liệu nhỏthường xuyên đọc viết trong khi các Social Network Services lại có một lượng dữ liệu cực lớn vàcập nhật liên tục do số lượng người dùng quá nhiều ở một thời điểm Thiết kế trên DistributedNoSQL giảm thiểu tối đa các phép tính toán, I/O liên quan kết hợp với xử lý theo lô đủ đảm bảođược yêu cầu xử lý dữ liệu của các mạng dịch vụ dữ liệu cộng đồng này Các trang như mạng xãhội - Facebook, thương mại điện tử - Amazon là những ví dụ điểm hình.Về cơ bản, các thiết kếcủa NoSQL lựa chọn mô hình lưu trữ tập dữ liệu theo cặp giá trị key-value Khái niệm nodeđược sử dụng trong quản lý dữ liệu phân tán Với các hệ thống phân tán, việc lưu trữ có chấpnhận trùng lặp dữ liệu Một request truy vấn tới data có thể gửi tới nhiều máy cùng lúc, khi mộtmáy nào nó bị chết cũng không ảnh hưởng nhiều tới toàn bộ hệ thống Để đảm bảo tính real timetrong các hệ thống xử lý lượng lớn, thông thường người ta sẽ tách biệt database ra làm 2 hoặcnhiều database Một database nhỏ đảm bảo vào ra liên tục, khi đạt tới ngưỡng thời gian hoặcdung lượng, database nhỏ sẽ được gộp (merge) vào database lớn có thiết kế tối ưu cho phép đọc(read operation) Mô hình đó cho phép tăng cường hiệu suất I/O - một trong những nguyên nhânchính khiến performance trở nên kém
3 Tích chất
Các mô hình cơ sở dữ liệu NoSQL có một số các tính chất như sau:
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 nào đó bịchết cũng không ảnh hưởng tới toàn bộ hệ thống
Trang 10Cơ sở dữ liệu nâng cao NoSQL
Atomicity: Độc lập data state trong các operation
Consistency: chấp nhận tính nhất quán yếu, cập nhật mới không đảm bảo rằng các truyxuất sau đó thấy ngay được sự thay đổi Sau một khoảng thời gian lan truyền thì tính nhất quáncuối cùng của dữ liệu mới được đảm bảo
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ưutrữ 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ậnbiế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ìnhphầ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áckhóa)
Không chỉ là "Database": CEO của Amazon, Werner Vogels đề cập đến hệ thốngDynamo của họ đã gọi nó là một "Highly available key-value store"; Google gọi BigTable đểnhấn mạnh đây là "Distributed storage system for managing structured data" (Hệ thống lưu trữ
và quản lý dữ liệu cấu trúc có phân tán) có thể thổi bay một lượng dữ liệu cực lớn Hypertable,một cơ sở dữ liệu dạng cột mã nguồn mở trên mô hình BigTable được sử dụng cho local searchengine của Zvents Inc có thể ghi tới 1 tỷ cell dữ liệu mỗi ngày (theo Doug Judd một kỹ sư củaZvents) Trong khi đó BigTable kết hợp với MapReduce có thể xử lý tới 20 petabytes dữ liệumỗi ngày Đánh bại performance bottlenecks Bằng việc bỏ qua thông dịch trong SQL cùng vớinhững truy vấn rườm rà, NoSQL cho ta một kiến trúc tối ưu về tốc độ thực thi (ghi và truy vấn
dữ liệu)
Việc sử dụng các ràng buộc quan hệ cùng truy vấn SQL có vẻ thân thiện và thích hợpvới phần đông dữ liệu Tuy nhiên, nếu dữ liệu quá đơn giản, các thủ tục SQL sẽ không cần thiết(theo Curt Monash - một nhà phân tích cơ sở dữ liệu, một blogger) Raffaele Sena, một seniorcomputer scientist ở Adobe Systems Inc đã nói rằng ConnectNow Web collaboration service của
họ sử dụng Java clustering software từ Terracotta thay cho cơ sở dữ liệu quan hệ đã khiến "Hệthống của họ trở nên mạnh hơn, phức tạp hơn so với việc sử dụng cơ sở dữ liệu quan hệ" Cácthiết kế database có tính đặc thù (như document-oriented database) sẽ lược bỏ được tầng chuyểnđổi sang mô hình lưu trữ quan hệ từ interface của nó đồng thời khiến giao tiếp tương tác trở nên
tự nhiên hơn
Trang 11Hình 3 – So sánh giữa MongoDB và SQL Server 2008
Không quá cần thiết: Đồng ý rằng RDBMs cung cấp một mô hình tuyệt vời để đảm bảotính toàn vẹn dữ liệu Tuy nhiên, rất nhiều người lựa chọn NoSQL đã nói rằng chúng không quácần thiết cho nhu cầu của họ Như trong dự án ConnectNow của Adobe, dữ liệu người dùngtrong một session không cần thiết phải lưu lại, chúng sẽ bị xóa khi người dùng logoff Vì vậy,một key-value memory storage là đủ dùng
4 Phân loại
4.1 Tổng quan
Mô hình NoSQL sử dụng mô hình dữ liệu logic có các lược đồ dữ liệu mở rộng lỏng lẻo(Map, Column Family, Document, Graph, v.v.) thay vì các mô hình hóa dữ liệu trong bộ dữ theolược đồ quan hệ cố định Thiết kế mở rộng quy mô ngang thông qua mô hình phân phối dữ liệuqua nhiều nút tuân thủ theo các nguyên tắc của định lý CAP (đảm bảo rằng bất kỳ hai khảnăng trong các khả năng: sẵn có, nhất quán hoặc phân vùng luôn đạt được) Điều này đi cùng với
sự cần thiết để hỗ trợ cho nhiều trung tâm dữ liệu và cung cấp linh động (thêm/gỡ bỏ mộtnút từ một Cluster) Có thể vẫn còn lưu trữ dữ liệu trên đĩa, bộ nhớ hoặc cả hai Đôi khi là trêncác thiết bị lưu trữ ngoài Hỗ trợ nhiều giao diện 'Non-SQL' (từ 2 trở lên) cho việc truy cập dữliệu
Dựa vào một số đặc điểm, chức năng của mô hình có thể phân loại mô hình NoSQL nhưsau:
Interfaces – REST (HBase, CouchDB, Riak, v.v.), MapReduce (HBase, CouchDB, MongoDB,
Hypertable, .v.v.), Get/Put (Voldemort, Scalaris, .v.v.), Thrift (HBase, Hypertable,Cassandra, v.v.), Language Specific APIs (MongoDB)
Trang 12Cơ sở dữ liệu nâng cao NoSQL
Logical Data Models – Key-Value oriented (Voldemort, Dynomite, v.v.), Column Familiy
oriented (BigTable, HBase, Hypertable, v.v.), Document oriented (Couch DB, MongoDB, v.v.),Graph oriented (Neo4j, Infogrid, v.v.)
Data Distribution Model – Tính nhất quán và sẵn có (HBase, Hypertable, MongoDB, v.v.),
Sẵn có và phân vùng (Cassandra, v.v.) Tính nhất quán và phân vùng là một sự kết hợp tại nơi
mà tính sẵn có của những node không đầy đủ được thỏa hiệp Thú vị là cơ sở dữ liệu 'NonRelational Database' không hỗ trợ sự kết hợp
Data Persistence – Memory Based (Redis, Scalaris, Terrastore), Disk Based (MongoDB,
Riak v.v.), kết hợp cả Memory và Disk (HBase, Hypertable, Cassandra) Các loại thiết bị lưutrữ cho một ý tưởng tốt về các loại trường hợp sử dụng các giải pháp có thể phục vụ Tuynhiên, trong hầu hết các trường hợp mọi người đều nhận thấy rằng các giải pháp dựa trên sự kếthợp là tốt nhất Các giải pháp kết hợp phục vụ cho hiệu suất cao, mặc dù trong lưu trữ dữ liệu bộnhớ và cũng đảm bảo độ bền bằng cách lưu trữ dữ liệu vào đĩa sau khi đủ viết đã xảy ra
Hình 4 - Phân loại mô hình NoSQL
4.2 Logical Data Models
a Wide Column Store / Column Families
Hệ cơ sở dữ liệu phân tán cho phép truy xuất ngẫu nhiên/tức thời với khả năng lưu trữmột lượng cực lớn dữ liệu có cấu trúc Dữ liệu có thể tồn tại dạng bảng với hàng tỷ bản ghi vàmỗi bản ghi có thể chứa hàng triệu cột Một triển khai từ vài trăm cho tới hàng nghìn phần cứnghàng hóa dẫn đến khả năng lưu trữ hàng petabytes nhưng vẫn đảm bảo tốc độ cao Dưới đây làmột số sản phẩm thông dụng: Hadoop/HBase – Apache, BigTable – Google, Cassandra
- Facebook/Apache, Hypertable - Zvents Inc/Baidu, Cloudera, SciDB, Mnesia, Tablets,…
Sử dụng bảng và cột trong cơ sở dữ liệu quan hệ (RDBMs)
Trong RBDMs, thuộc tính của một thực thể được lưu trữ trong cột của bảng dữ liệu Những cộtđược định nghĩa trước và toàn bộ giá trị được lưu trữ trong các ô của bảng dữ liệu như hình 5
Trang 13Hình 5 – Bảng dữ liệu
Khi khối lượng dữ liệu tăng lên thì chúng ta phải lưu trữ các giá trị tại các ô dữ liệu theo từng lần
mà sự thay đổi của nó diễn ra Có thể coi như là một bảng Excel bao gồm có 3 chiều và chiều thứ
3 chính là chiều thời gian như dưới hình 6
Hình 6 – Bảng dữ liệu theo thời gian
Mặc dù đây là một ví dụ hết sức đơn giản, bạn có thể cảm nhận được rằng bảng dữ liệu cùng với
sự tăng của dữ liệu, lưu trữ rất nhiều các ô dữ liệu riêng rẽ theo thời gian sẽ làm vấn đề trở lên rấtphức tạp Giới thiệu các cơ sở dữ liệu dạng cột bởi vì ví dụ biểu diễn cách sử dụng cơ sở dữ liệu
Trang 14Cơ sở dữ liệu nâng cao NoSQL
quan hệ (RDBMs), để hiểu được mô hình cơ sở dữ liệu dạng cột trong mô hình không quan hệcần nắm rõ được khái niệm đặc tính khóa (key)
Sự đối lập của cơ sở dữ liệu dạng cột và cơ sở dữ liệu quan hệ
Đầu tiên và cũng là quan trọng nhất, một cơ sở dữ liệu hướng dạng cột (column-orienteddatabase) áp đặt một sự cần thiết nhỏ nhất cho việc định nghĩa các lược đồ trước và có thể dễdàng chứa được các cột mới như là sự gia tăng của dữ liệu Trong một lưu trữ hướng dạng cộtđiển hình (typical column-oriented store) thì xác định trước một column-family và đây khôngphải là một cột Một column-family được định nghĩa là một tập hợp các cột được nhóm vàothành một bó (bundle) Những cột trong column-family thì có quan hệ logic với nhau (mặc dù làkhông bắt buộc) Các thành viên của một column-family được lưu trữ vật lý cùng nhau vàthường một người sử dụng được lợi bởi chung nhau những cột do truy cập có cùng tính chất vàocùng một column-family Nếu bất kỳ một giới hạn lý thuyết tồn tại trên số column-family bạn cóthể xác định nhưng giữ chúng ở giá trị nhỏ nhất có thể giúp các lược đồ trở lên linh động Quaytrở lại với ví dụ trên, chúng ta có thể định nghĩa 3 column-family: name, location, preferences làđủ
Trong một cơ sở dữ liệu dạng cột, một column-family tương tự một cột trong RDBMs Cả 2 đềubao gồm định nghĩa chung trước khi dữ liệu được lưu trữ trong bảng và được thống kê công bằngtrong tự nhiên Cột trong RDBMs định nghĩa kiểu dữ liệu được lưu trữ trong cột Column-familythì không bị giới hạn, nó có thể chứa bất kỳ một số cột và các cột này có thể chứa bất kỳ một loại
dữ liệu nào có thể hiểu như là một mảng của các bytes dữ liệu Mỗi một hàng của cơ sở dữ liệuhướng cột chỉ lưu trữ giá trị của dữ liệu trong những cột mà giá trị của nó là hợp lệ Không có giátrị Null Ở giại đoạn này có thể có lợi từ việc nhìn Hình 7, ví dụ hiện tại thay đổi để phù hợp vớilưu trữ dữ liệu dạng cột
Hình 7 – Column - Family
Trang 15Một phần từ những lưu trữ thân thiện cho tập dữ liệu riêng rẽ và lỏng lẻo, những dữ liệu dạng cộtcũng lưu trữ các phiên bản khác nhau của ô dữ liệu Tuy nhiên, sự tăng liên tục của dữ liệu trong
ví dụ trên có thể được lưu trữ trong dữ liệu dạng cột như hình 8
Hình 8- Lưu trữ dữ liệu tăng theo thời gian
Trong lưu trữ vật lý, dữ liệu không lưu trữ trong các bảng đơn mà được lưu trữ bởi các family Dữ liệu dạng cột được thiết kế để có thể dễ dàng thay đổi kích thược hoặc thêm hàngtriệu các cột hoặc hàng tỷ các hàng dữ liệu mới Do đó, một bảng có thể được kéo dài trên nhiềumáy tính Một row-key duy nhất để xác định một hàng trong dữ liệu dạng cột Các hàng đượcsắp xếp và chia thành từng bó, chứa các giá trị liền nhau như là sự phát triển của dữ liệu Hình 9
column-sẽ minh họa rõ hơn dữ liệu được lưu trữ vật lý như thế nào
Trang 16Cơ sở dữ liệu nâng cao NoSQL
Hình 9 – Mô hình lưu trữ vật lý.
Những dữ liệu dạng cột điển hình thường được lưu trữ theo dạng Cluster (phân cụm) mặc dù nó
có thể chạy trong những Node đơn lẻ cho sự phát triển hoặc những mục đích thử nghiệm Mỗi dữliệu dạng cột cần có các mô hình topo mạng riêng và kiến trúc để triển khai mạng, nhưng nghiêncứu sâu về chúng thì có thể thấy một kịch bản chung
Dữ liệu dạng cột như là một bản đồ lồng nhau của các cặp khóa/giá trị (key/value)
Mặc dù coi dữ liệu dạng cột như một bảng với các thuộc tính đặc biệt có thể dễ hiểunhưng nó lại tạo ra một sự mơ hồ Những cột giống nhau và bảng ngay lập tức gợi nhớ đến ýtưởng về cơ sở dữ liệu quan hệ và dẫn bạn tới một lược đồ giống như ở trên Điều này có thểlàm bất lợi và thường nguyên nhân các nhà phát triển phạm phải là lại sử dụng dữ liệu dạng cộtgiống như cơ sở dữ liệu quan hệ Chắc chắn đây là lỗi thường gặp phải và khi thiết kế mà cầnphải tránh Luôn nhớ rằng sử dụng một công cụ đúng cho một công việc quan trọng hơn là bảnthân công cụ đó Nếu mô hình dữ liệu quan hệ (RDBMs) là cái bạn cần, hãy sử dụng nó Tuynhiên, nếu bạn sử dụng dữ liệu dạng cột để thay đổi kích thước một lượng lớn dữ liệu thì khôngnên sử dụng RDBMs
Trang 17Đơn giản chúng ta có thể hiểu dữ liệu dạng cột như một tập hợp của các bản đồ lồng nhau(Nested map) Bản đồ hay là bản đồ băm thường được tham chiếu như là một mảng liên kết cócác cặp khóa và giá trị tương ứng với khóa đó Khóa phải là duy nhất để tránh trường hợp tranhchấp và giá trị thường là một mảng bytes bất kỳ Một số bản đồ có khóa là các chuỗi ký tự và hầuhết các cơ sở dữ liệu dạng cột thường không có những giới hạn, ràng buộc Google Bigtable làmột ví dụ, đây là nguồn cảm hứng cho các cơ sở dữ liệu dạng cột sau này, thường được địnhnghĩa riêng rẽ, phân tán, bền bỉ, nhiều chiều và là một bản đồ lưu trữ.
Một ví dụ tinh hoa không thể thiếu khi bàn luận về cơ sở dữ liệu dạng cột (column –database) là ví dụ có tên gọi là Webtable dùng để lưu trữ các dữ liệu sao chép từ các trang web.Như là một bảng lưu trữ nội dung của các trang web, ngoài ra còn có các thuộc tính liên quankhác Như các thuộc tính có thể cố định tham chiếu đến các trang hoặc dạng mime liên quan tớinội dung Google giới thiệu đầu tiên là các nghiên cứu trên Bigtable Một Webtable sử dụng đảongược URL của trang web như là một row-key cho trang web đó Do đó, một URL như
www.example.com sẽ có row-key là com.example.www Dạng của row-key sẽ là tiền đề trong
sự sắp xếp theo hàng của dữ liệu trong cơ sở dữ liệu dạng cột Do đó, các hàng mà chưa dữ liệuliên quan đến hai miền example.com giống như www.example.com hoặc news.example.com
được lưu trữ gần nhau khi đảo ngược các URL để làm row-key, giúp cho việc truy vấn các dữliệu liên quan đến miền (domain) dễ dàng hơn
Thường, nội dụng, vị trí và dạng mime được coi như một column-family dẫn tới mô hình kháiniệm giống như bảng dạng cột Hình 10
Hình 10 – Ví dụ về Webtable.
b Document Store Internal