TỔNG QUAN VỀ BIG DATA: Bigdata là một tập dữ liệu rất lớn và rất đa dạng đến nỗi những công cụ quản lý dữ liệu truyền thống không thể nào quản lý nổi. Kích cỡ của big data ngày một tăng lên theo thời gian. Chúng ta đang là một phần của big data mỗi ngày. Tại sao lại nói như vậy, đơn giản hãy lấy một vài ví dụ: · Đối với các mạng xã hội lớn chẳng hạn Facebook hay Twiter, mỗi một lần chúng ta đăng lên một status hay một tweet chính là ta đã tạo ra một lượng dữ liệu nhất định và lượng dữ liệu đó được Facebook hoặc Twiter quản lý. Lượng dữ liệu đó nếu chỉ tính riêng một người thì không đáng kể nhưng trên thế giới có rất rất nhiều người tham gia vào các mạng xã hội và thông qua đó lượng dữ liệu sinh ra đơn giản là một con số vô cùng lớn. · Việc tìm kiếm theo thời gian thực trên google cũng là một ví dụ về big data, lượng dữ liệu mà google có để người dùng có thể tìm kiếm chính xác là vô cùng lớn. · Ngoài ra còn khá nhiều ví dụ khác như theo giõi về tình hình tài chính, giao dịch tiền tệ,… Đối với dữ liệu hàng trăm PB thì rõ ràng việc lưu trữ bằng những công cụ truyền thống là quá khó khăn, tốn kém và đôi khi là bất khả thi. Khi nói đến bigdata chúng ta thường nhắc tới: lượng (volume), tốc độ (velocity) và chủng loại (variety). Big data vô cùng đa dạng: từ những dữ liệu do máy móc tự động tự sinh ra cho tới dữ liệu được tạo ra hàng ngày trên Internet, dữ liệu từ các vệ tinh,…Big data có thể có cấu trúc hoặc không có cấu trúc nào. Tại sao big data đang ngày một quan trọng hiện nay: Big data hiện nay ngày một được quan tâm vì những ưu điểm rất lớn của nó, có rất nhiều lĩnh vực cần sử dụng tới big data, sau đây là một số lĩnh vực mà chúng ta có thể thấy được việc ứng dụng bigdata là cần thiết: · Phân loại hình ảnh Picasa từ Google là công cụ hữu ích cho phép người dùng sắp xếp, truy vấn, và nhận dạng khuôn mặt tự động sử dụng những công nghệ thị giác máy tính kết hợp với máy học. Đây là một kết quả tuyệt vời có được từ giá trị của những ứng dụng và dịch vụ trên dữ liệu lớn. Công cụ này làm rõ việc phân tích dữ liệu lớn sẽ đòi hỏi phân tích nâng cao như thị giác máy tính và phương pháp như thị giác máy tính. · Những hệ thống được khuyến cáo như Pandora (âm nhạc), Netflix (phim ảnh), và Amazon (sách và sản phẩm) dùng dữ liệu khách hàng và nhiều đại lý trong một phương pháp tiếp cận được biết đến là collaborative filtering (phương pháp lọc cộng tác). Dịch vụ dữ liệu lớn này đã là chủ đề của nhiều nghiên cứu tiên tiến trong máy học và khai phá dữ liệu. Rõ ràng là nếu khả năng thực hiện gợi ý tốt thì có thể tăng doanh số bán hàng và sự hài lòng của khách hàng. · Những phân tích dựa trên khách hàng có thể phân tích tâm lý cho khách hàng của bạn dựa trên dữ liệu mạng xã hội (Facebook và Twitter) khi dữ liệu văn bản này có liên quan đến BI (Business Intelligence) thu thập từ những thông tin giao dịch khách hàng truyền thống. Phân tích tâm lý cho phép một doanh nghiệp biết nhu cầu khách hàng muốn về sản phẩm của họ, sự quan tâm của khách hàng về sản phẩm của họ hay của đối thủ cạnh tranh, những gì khách hàng thích và không thích, v.v.... · Dữ liệu được tạo ra từ máy tính có nguồn gốc từ các hệ thống mạng báo hiệu (ví dụ: những cảm biến nhúng trong các hệ thống lớn như giao thông đô thị, đèn giao thông, và cơ sở hạ tầng); dữ liệu giữa các thiết bị máy móc, theo đó mà các thiết bị cảm biến hay dữ liệu đăng nhập từ một máy (thường là trong lĩnh vực này) được truyền đến các máy khác; và các tập tin nhật ký, thường được sử dụng nhiều nhất trong công nghệ thông tin để gỡ lỗi nhiều vấn đề và xử lý các sự cố hệ thống ngoài ý muốn (bỏ qua các vấn đề cần sự can thiệp của con người để khôi phục và tiếp tục hoạt động). · Hệ thống đặt chỗ cho du lịch thì đang được cải thiện bằng cách kết hợp sở thích khách hàng, hậu cần và tiền sử trước khi đưa ra những đề nghị hữu ích, đó luôn là một nhiệm vụ khó khăn. · Giải trí trên mạng xã hội đang thay đổi các khía cạnh xã hội của việc phát sóng truyền hình và các đoạn phim, nơi mà kỹ thuật số đáp ứng yêu cầu nội dung mọi lúc mọi nơi, nhưng việc chia sẻ kinh nghiệm vẫn phải thông qua mạng xã hội. Mặc dù vậy, điều này giúp khán giả cảm thấy thú vị hơn, cho phép khán giả sáng tạo nội dung, biên kịch, và những nghệ sĩ có thể biết nhiều hơn về khán giả của họ. · Hệ chuẩn đoán y học bao gồm những hệ thống có sự hỗ trợ của hệ chuyên gia dựa trên luật (gọi là DSSes: Rule-based Expert Decision Support Systems), nhưng với dữ liệu lớn, bằng chứng tồn tại những hệ thống này có thể ra khỏi nghiên cứu và trở thành những người phụ tá y tế chính. Ví dụ: Một Hệ chuyên gia để hỗ trợ đánh giá tâm lý người bệnh có nguy cơ tự tử đã được đề cập trong bài nghiên cứu (xem phần Tài nguyên). Phần chứng minh những hệ thống này để so sánh với dữ liệu trong lịch sử. Những hệ thống có thể thay con người quyết định làm mà còn có thể cải thiện nó khi việc sử dụng như một công cụ hỗ trợ. BIG DATA VÀ NOSQL Như đã nói ở trên, big data không được lưu trữ, quản lý bằng những công cụ truyền thống, vậy chúng ta quản lý nó như thế nào, hãy tìm hiểu về NoSQL. Thuật ngữ NoSQL thường được hiểu là Non Relation hoặc hiện nay thường được định nghĩa là Not Only SQL. NoSQL không sử dụng mô hình quan hệ dữ liệu quan hệ MONGODB Là một document-oriented database, không phải là cơ sở dữ liệu quan hệ. Ý tưởng căn bản là thay thế các row trong cơ sở dữ liệu quan hệ bằng các “document”. Bằng cách cho phép nhúng vào những document và array, một document-oriented database có thể thể hiện được những quan hệ phân cấp phức tạp với chỉ một record. Scaling: Việc lựa chọn scale database: Có 2 lựa chọn: 1 là scaling up (dùng một máy tính khác có thể chứa được nhiều dữ liệu hơn); 2 là scaling out (Chia data ra nhiều máy tính khác nhau). Việc scale up tất nhiên là nếu thực hiện sẽ đơn giản, chỉ việc thay thế một thiết bị có dung lượng lưu trữ thấp hơn bằng thiết bị có dung lượng lưu trữ cao hơn, tuy nhiên việc thay thế này sẽ dẫn tới chi phí rất tốn kém. Hơn nữa với sự phát triển của ngày nay, dữ liệu sẽ ngày một lớn hơn nữa, nếu lựa chọn scale up thì chi phí để thay thế sẽ ngày một tăng, tuy nhiên nếu như đối với một sản phẩm ứng dụng web lớn, có nhiều người mong muốn tham gia để xây dựng nó thì việc sử dụng chung dữ liệu trên một máy dường như là quá khó khăn. Scale out có thể giải quyết được những vấn đề mà scale up không làm được đó là: vừa mở rộng được data, vừa mang lại hiệu quả kinh tế bằng việc ít tốn kém. MongoDB được xây dựng theo hướng scale out. Mô hình dữ liệu theo hướng document oriented cho phép nó tự động tách data ra nhiều server khác nhau. Nó có thể cân bằng dữ liệu và cho phép load lại dữ liệu bằng cách gom cụm dữ liệu, redistributing(ngược lại với distributed) document một cách tự động. Như đã nói ở trên “document” trong MongoDB tương đương với “row” trong Relational database (nó có thể còn thể hiện được thêm một số ngữ nghĩa khác tốt hơn so với row). Ngoài ra một “collection” tương đương với “table” trong Relational database. Document: là một tập hợp có thứ tự của những key và value tương ứng của chúng. VD: {"greeting" : "Hello, world!", "foo" : 3}, tuy nhiên do có thứ tự nên chúng được viết lại cho đúng là: {"foo" : 3, "greeting" : "Hello, world!"}. Thực ra việc sắp xếp thứ tự này không mang tính quan trọng quá cao, có rất nhiều ngôn ngữ có cơ chế sắp xếp lại khi cần thiết. Mỗi document trước được phân biệt với document sau (tức là không có document nào giống nhau). Values trong document không nhất thiết phải cùng loại giống nhau, chúng có thể thuộc nhiều loại data. Key trong document là một chuỗi, bất kỳ một ký tự UTF-8 nào cũng có thể được chấp nhận là một key trong document. Tuy nhiên có một số lưu ý: không được dùng ký tự null để thể hiện một key, đối với những key bắt đầu bằng . hoặc $ phải sử dụng chúng trong những hoàn cảnh chắc chắn hai ký tự này cùng với _ tạo nên những key được xem là reserved. Một key là duy nhất trong một document, không thể có hai key giống nhau. Collection: Là tập hợp của các document. Trong mongoDB, collection là schema-free, nghĩa là collection có thể tập hợp nhiều kiểu document khác nhau vào cùng một collection, tuy nhiên thông thường người ta vẫn cố gắng không gom những kiểu document khác nhau vào chung một collection mà cố gắng phân ra các nhóm collection khác nhau, mục đích của việc này là giúp thuận tiện trong việc truy xuất, tìm kiếm dữ liệu, thử tưởng tượng trong cùng một collection có rất nhiều kiểu document, với shape khác nhau, khi ta muốn tìm kiếm một thông tin nào đó trong collection này thì việc tìm kiếm sẽ trở nên không đơn giản vì thay vì tìm kiếm trong cùng một định dạng giữa các document, ta phải tìm kiếm theo những dạng khác nhau, điều này gây ra nhiều phiền toái. Databases: Tập hợp của các collection được gọi là database. Bài viết còn sơ sài, chủ yếu nêu lên một vài ý chính, còn khi báo cáo sẽ nói rõ hơn.