Hướng dẫn date trong mongodb - date in mongodb
Một số định nghĩa trước khi đi sâu về MongoDB. Đây là một cross-platform, DB hướng documents với hiệu năng cao, có thể đáp ứng cho đa dạng các hệ thống và dễ dàng để scale. Tư tưởng của MongoDB là thông qua khái niệm collection và document. Vì không tìm được từ tiếng việt hay ho hơn nên tạm thời cho phép mình giữ nguyên các khái niệm tiếng anh của 2 thuật ngữ này. Show Nội dung chính
DatabaseDatabase là một container vật lý cho các collection. Mỗi DB được thiết lập cho riêng nó một danh sách các files hệ thống files. Một máy chủ MongoDB đơn thường có nhiều DB. CollectionCollection là một nhóm các documents của MongoDB. Nó tương đương với một table trong RDBMS. Một Collection tồn tại trong một cơ sở dữ liệu duy nhất. Các collection ko tạo nên một schema. Documents trong collection có thể có các fields khác nhau. Thông thường, tất cả các documents trong collections có mục đích khá giống nhau hoặc liên quan tới nhau DocumentMột document là một tập hợp các cặp key-value. Documents có schema động. Schema động có nghĩa là documents trong cùng một collection không cần phải có cùng một nhóm các fields hay cấu trúc giống nhau, và các fields phổ biến trong các documents của collection có thể chứa các loại dữ liệu khác nhau. Bảng dưới đây cho thấy mối quan hệ của các thuật ngữ RDBMS với MongoDB Một số cân nhắc khi thiết kế schema trong MongoDB
MongoDB - Sort Records MongoDB - Indexing
Collection Collection là một nhóm các documents của MongoDB. Nó tương đương với một table trong RDBMS. Một Collection tồn tại trong một cơ sở dữ liệu duy nhất. Các collection ko tạo nên một schema. Documents trong collection có thể có các fields khác nhau. Thông thường, tất cả các documents trong collections có mục đích khá giống nhau hoặc liên quan tới nhau Document
Một document là một tập hợp các cặp key-value. Documents có schema động. Schema động có nghĩa là documents trong cùng một collection không cần phải có cùng một nhóm các fields hay cấu trúc giống nhau, và các fields phổ biến trong các documents của collection có thể chứa các loại dữ liệu khác nhau. MongoDB - Create/Drop DatabaseBảng dưới đây cho thấy mối quan hệ của các thuật ngữ RDBMS với MongoDB
Thiết kế schema dựa trên yêu cầu của user
Kết hợp các object vào một document nếu bạn sử dụng chúng với nhau. Nếu không thì tách riêng hẳn nó ra (nhưng cần phải chú ý là sau này nó sẽ không phải joins).
Duplicate dữ liệu (nhưng có giới hạn) vì không gian đĩa là quá rẻ so với tốc độ xử lý.
joins khi write, không joins khi read.
Tối ưu schema cho hầu hết các case sử dụng thông thường
MongoDB - Create/Drop CollectionTập hợp các nhóm phức tạp vào schema
Ví dụ : Giả sử là một khách hàng cần một thiết kế DB cho blog của anh ta và cân nhắc sự khác biệt schema giữa RDMS và MongoDB. Web sẽ có những yêu cầu sau : Mọi post có unique title, description và url. Mọi post có thể có 1 hoặc nhiều tags.
Mọi post có name của publisher và số lượng người xem likes
Mọi post có comments bới một user với name, message, data-time và likes. 0Mỗi postc có thể có 0 hoặc nhiều comments. 1Kiểu dữ liệu
MongoDB - DocumentVí dụ nhé : 2Thiết kế schema dựa trên yêu cầu của user 3Kết hợp các object vào một document nếu bạn sử dụng chúng với nhau. Nếu không thì tách riêng hẳn nó ra (nhưng cần phải chú ý là sau này nó sẽ không phải joins). 4Duplicate dữ liệu (nhưng có giới hạn) vì không gian đĩa là quá rẻ so với tốc độ xử lý. 5Để hiện thể kết quả đẹp hơn. Bạn có thể dùng thêm phương thức 2 6Cách sử dụng find AND trong MongoDB 7Cách sử dụng find OR trong MongoDB 8Dưới đây là một ví dụ sử dụng cả AND và OR trong MongoDB 9Tiếp đến là lệnh UPDATE 0Giá sử dữ liệu ban đầu của bạn là như thế này 1Sau khi chạy 2Bạn sẽ nhận được kết quả như sau 3Bạn có thể update nhiều documents bằng cach truyền một param 'multi' cho nó true 4Lệnh SAVECú pháp của lệnh này như sau 5Dưới đây là ví du 6khi bạn chạy đoạn này phần dữ liệu của documents có ID 3 sẽ bị thay thế như sau 7Lệnh REMOVELệnh này khá đơn giản. Các bạn tự tìm hiểu thêm nhé. MongoDB - ProjectionTrong mongodb, projection có nghĩa là bạn chỉ cần chọn những dữ liệu cần hthieets thay vì select hết mọi dữ liệu của documents. Nó khác find trong find Collection ở chỗ là find thì tìm kiếm dữ liệu document trong collection. Còn khía niệm này sẽ tìm kiếm kết quả fields trong documents. ví dụ bạn cần hiển thị 3 fields kết quả trong 5 fields của một documents. syntax của lệnh tìm kiếm này sẽ là 8Ví dụ dữ liệu hiện tại của bạn như sau : 1Bạn chỉ cần muốn hiển thị mỗi title thôi. Hãy làm như sau 0Rất đơn giản phải ko ! MongoDB - Limit RecordsĐể giới hạn số lượng records trong MongoDB, bạn sẽ dùng phương thức limit(). Limit() sẽ chấp nhận số lượng record giới hạn thông qua argument mà bạn truyền vào. Nó sẽ thể hiện số lượng documents bạn muốn hiển thị. 1Sử dụng ví dụ ở Projection ở trên chúng ta có ví dụ sau 2Ngoài ra có lệnh skip() cho phép bạn bỏ qua 1 giá trị document. 3MongoDB - Sort RecordsĐể sort các document trong MongoDB, bạn cần phải sử dụng sort(). sort() cho pehsp một document trong chứa các fields theo thứ tự order. có 2 loại thứ tự, 1 sẽ tương đương với ascending và -1 sẽ tương đương với descending. 4MongoDB - IndexingIndex hỗ trợ độ phân tích một cách hiệu quả các truy vấn. Nếu không có chỉ mục, MongoDB sẽ phải quét tất cả các documents của collection để chọn ra những document phù hợp với câu truy vấn. Quá trình quét này là không hiệu quả và yêu cầu MongoDB để xử lý một khối lượng lớn dữ liệu. Index là những cấu trúc dữ liệu đặc biệt, dùng để chứa một phần nhỏ của các tập dữ liệu một cách dễ dàng để quét. Chỉ số lưu trữ giá trị của một fields cụ thể hoặc thiết lập các fields, sắp xếp theo giá trị của các fields này. 5Để có thể đánh số nhiều fields, bạn hãy dùng 4 6Ở đây giá trị 1 và -1 là thể hiện thứ tự sắp xếp index. 4 có khá nhiều tham số để bạn có thể tùy chỉnh.MongoDB - AggregationAggregation xử ly các record dữ liệu va trả về kết quả đã tính toán rồi. Aggregation sẽ group giá trị từ nhiều documents khác nhau và có thể tiến hành xử lý rất nhiều nhóm dư liệu để trả về một kết quả đơn lẻ. Xử lý này tương đương với count(*) trong SQL. 7Ví dụ chúng ta có dữ liệu như thế này. 8Nếu bạn muốn hiển thị có bao nhiêu tutorial được viết bởi mỗi user bạn sẽ sử dụng 6 như sau : 9Tương ứng với câu truy vấn trên trong SQL sẽ là 7. Trong ví dụ ở trên, chúng ta đã group các documents bới fields 8 và sau đó trên mỗi lần xả ra by_user giá trị tổng được tăng lên.Khái niệm về PIPELINETrong các lệnh shell UNIX, pipeline có ý nghĩa khả năng để thực hiện một xử lý trên một vài input và sử dụng các outpust như là input cho lệnh toeeps theo. MongoDB cũng hỗ trợ khái niệm tương tự trong framework aggregation. Sẽ có một tập hợp các stage có thể xảy ra và mỗi stage được đánh dấu bằng môt nhóm các documents như là input và tính toán ra kết quả của nhóm documents đó. Kết quả nà có thể sẽ được chuyển thành input sử dụng cho stage kế tiếp. Bài viết sau mình sẽ viết tiếp về những vấn đề nâng cao hơn của MongoDB. MongoDB - ReplicationReplication là khái niệm đồng bộ hóa dữ liệu trên nhiều server. REplication sẽ cung cấp rất nhiều và tăng tính sẵn sàng của data với nhiều bản copy dữ liệu trên nhiều server DB, replications bảo vê DB khỏi việc mất dữ liệu trên 1 server đơn lẻ. Relication cũng cho phép bạn có thể khôi phục dữ liệu từ các ổ cứng bị lỗi và việc service bị lỗi hay gặp vấn đề. Với rất nheieuf các copy dữ liệu, bạn có thể tinh chỉnh môt bản cho việc khôi phục, report hoặc backup. Tại sao lại cần REPLICATION
REPILCATION hoạt động như thế nào trong MongoDBMongoDB lưu trử replication bằng việc sử dụng tập hợp repica. Một tập hơp replica chính là một group các instance 9 mà có host cung chung tập hợp dữ liệu. Tất cả các instance khác, thứ 2 sẽ được apply xử lý từ instance primary cho nên nó sẽ có chung tập hợp dữ liệu. Replica chỉ có duy nhất một node primary chính.
MongoDB - ShardingSharding là quá trình xử lý lưu trử dữ liệu record trên nhiều máy và đây là cách tiếp cận của MongoDB để có thể thỏa mãn các yêu cầu về big data. Khi size của dữ liệu gia tăng, một máy tính đơn lẻ ko thể đủ để lưu dữ liệu cũng như cung cấp các xử lý read và write thông thường. Sharding giải quyết bài toán này bằng cách scale lên theo chiều ngang. VỚi sharding, bạn có thể sẽ add thêm machines để hỗ trợ lưu trữ dữ liệu cũng như các yêu cầu về đọc và viết. Tại sao lại cần Sharding
Sharding in MongoDBĐây là mô hình sharding trong MongoDB
Nguồn : http://www.tutorialspoint.com/ |