1. Mongodb là gì?
a. Giới thiệu
MongoDB (được lấy tên từ “humongous”) là hệ thống CSDL mã nguồn mở dạng NoSQL. Thay vì lưu trữ cấu trúc dạng table như các Hệ CSDL quan hệ truyền thống, MongoDB lưu trữ dữ liệu dưới dạng JSON, khiến cho việc sử dụng nó trên một số loại ứng dụng trở nên dễ dàng và nhanh chóng hơn.
MongoDB đầu tiên được phát triển bởi công ty phần mềm 10gen (nay là MongoDB Inc) trong tháng 10 năm 2007 như một sản phẩm dịch vụ, công ty chuyển sang mô hình phát triển mã nguồn mở trong năm 2009, với việc 10gen cung cấp hỗ trợ thương mại và các dịch vụ khác. Kể từ đó, MongoDB đã được áp dụng trên rất nhiều hệ thống dịch vụ lớn, bao gồm Craigslist, eBay, Foursquare, SourceForge, Viacom, the New York Times, và nhiều hơn nữa. Mongo trở thành Hệ CSDL NoSQL phổ biến nhất.
MongoDB được viết bằng C++, và sau đây là những đặc điểm chính của MongoDB: (tham khảo thêm tại www.mongodb.org)
b. Đặc điểm của Mongodb
– NoSQL lưu trữ dữ liệu của mình theo dạng cặp giá trị “key – value”. Sử dụng số lượng lớn các node để lưu trữ thông tin – Mô hình phân tán dưới sự kiểm soát phần mềm
– Chấp nhận dữ liệu bị trùng lặp do một số node sẽ lưu cùng thông tin giống nhau
Một truy vấn sẽ được gửi tới nhiều máy cùng lúc, do đó khi một máy nào đó không phục vụ được sẽ không ảnh hưởng lắm đến chất lượng trả về kết quả
– Phi quan hệ – không có ràng buộc nào cho việc nhất quán dữ liệu
– Tính nhất quán không theo thời gian thực: Sau mỗi thay đổi CSDL, không cần tác động ngay đến tất cả các CSDL liên quan mà được lan truyền theo thời gian.
c. Điểm mạnh của Mongodb
– Dễ học, có một số nét khá giống với CSDL quan hệ – Quản lý bằng command line hoặc bằng GUI như RockMongo hoặc phpMyAdmin
– Linh động, không cần phải định nghĩa cấu trúc dữ liệu trước khi tiến hành lưu trữ nó -> rất tốt khi ta cần làm việc với các dạng dữ liệu không có cấu trúc.
– Khả năng mở rộng tốt (distributed horizontally), khả năng cân bằng tải cao, tích hợp các công nghệ quản lý dữ liệu vẫn tốt khi kích thước và thông lượng trao đổi dữ liệu tăng.
– Miễn phí
d. Ưu , nhược điểm của Mongodb
Ưu điểm:
Dữ liệu lưu trữ phi cấu trúc, không có tính ràng buộc, toàn vẹn nên tính sẵn sàng cao, hiệu suất lớn và dễ dàng mở rộng lưu trữ
Dữ liệu được caching (ghi đệm) lên RAM, hạn chế truy cập vào ổ cứng nên tốc độ đọc và ghi cao
Nhược điểm:
Không ràng buộc, toàn vẹn nên không ứng dụng được cho các mô hình giao dịch yêu cầu độ chính xác cao
Không có cơ chế transaction (giao dịch) để phục vụ các ứng dụng ngân hàng
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
Như đã giới thiệu ở trê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.
2. Cài đặt Mongodb trên Centos
B1 : Add MongoDB Yum Repository
# touch /etc/yum.repos.d/mongodb.repo
# vim /etc/yum.repos.d/mongodb.repo
Với Centos 64 bit thêm:
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
Với Centos 32 bit
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/
gpgcheck=0
enabled=1
Trường hợp bước 2 không cài được mà báo bị lỗi
http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/repodata/repomd.xml: [Errno 14] Downloaded more than max size for https://www.mongodb.com/: 125777 > 102400
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: mongodb. Please verify its path and try again
Thay lại nội dung file: mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
Cẩn thận thì chạy thêm 1 lệnh:
$ yum clean all
B2: Install Mongodb
# yum install mongodb-org
B3: Khởi động Mongodb
# service mongod start
Đặt khởi động cùng OS
# chkconfig mongod on
B4: Kiểm tra version mongodb
# mongo –version
MongoDB shell version: 2.6.0
Test thử bằng thực thi lệnh bằng command line
# mongo
> db.test.save( { a: 1 } )
> db.test.find()
{ “_id” : ObjectId(“52b0dc8285f8a8071cbb5daf”), “a” : 1 }
Ngoài ra , bạn có thể vào link tại đây để thực hành
Thanks @betapcode