Trong bài viết này, tôi cố gắng đưa ra những thông tin cần thiết về NoSQL. NoSQL là gì? NoSQL để làm gì? Tại sao phải dùng NoSQL?...và giới thiệu về MongoDB.

Tôi không đi sâu vào những vấn đề như: NoSQL ra đời năm bao nhiêu, ai là cha đẻ của NoSQL hay quá trình phát triển của nó. Bạn có thể tìm kiếm các tài liệu liên quan đến NoSQL rất nhiều từ trên mạng. Vì vậy, tôi chỉ tập trung vào những điều cốt lõi để tạo bước đẩy cho chúng ta thao tác với NoSQLMongoDB khi làm việc với Java. (Vì đây là blog về Java).

Do đó, nếu bạn chưa biết tới NoSQL hay lần đầu làm việc với MongoDB thì trước tiên bạn nên tìm kiếm và đọc những tài liệu liên quan tới nó.

1. NoSQL là gì?

    NoSQL là 1 dạng CSDL mã nguồn mở không sử dụng T-SQL để truy vấn thông tin. NoSQL viết tắt bởi: None-Relational SQL, hay có nơi thường gọi là Not-Only SQL.

    NoSQL được phát triển trên Javascript Framework với kiểu dữ liệu là JSON và dạng dữ liệu theo kiểu key và value (1 đặc trưng về dữ liệu trong JSON). NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của mô hình dữ liệu quan hệ RDBMS về tốc độ, tính năng, khả năng mở rộng, memory cache,...

    Chắc hẳn, bạn đã sử dụng 1 dạng CSDL quan hệ nào đó trước khi đọc bài viết này của tôi, có thể là: SQL Server, MySQL. Và tất nhiên không ít lần bạn vất vả trong việc chỉnh sửa các bảng dữ liệu khi liên quan tới khóa chính và khóa ngoại, hay 1 loạt các rắc rối khác trong quá trình làm việc. Bởi đó là CSDL quan hệ.

    Với NoSQL bạn có thể mở rộng dữ liệu mà không lo tới những việc như tạo khóa ngoại, khóa chính, kiểm tra ràng buộc, .v.v...Vì NoSQL không hạn chế việc mở rộng dữ liệu nên tồn tại nhiều nhược điểm như: sự phục thuộc của từng bản ghi, tính nhất quán, toàn vẹn dữ liệu,....nhưng chúng ta có thể chấp nhận những nhược điểm đó để khiến ứng dụng cải thiện hiệu suất cao hơn khi giải quyết những bài toán lớn về hệ thống thông tin, phân tán hay lưu trữ dữ liệu.

    Với các CSDL quan hệ, chi phí triển khai cũng như phát triển các ứng dụng sử dụng CSDL quan hệ cũng rất tốn kém và điều quan trọng được bộc lộ rõ khi truy vấn 1 lượng bản ghi lớn trong thời gian rất dài. Tiếp đó những thiết bị cầm tay như smartphone thì không phù hợp để triển khai CSDL quan hệ vì dung lượng bộ nhớ thấp và khả năng xử lý kém hơn máy tính. Và còn rất nhiều lí do khác nữa để chúng ta quyết định việc áp dụng NoSQL vào trong dự án của mình. Bạn có thể tham khảo thêm những thông tin khác về NoSQL trên mạng.

    NoSQL được sử dụng ở đâu? NoSQL được sử dụng ở rất nhiều công ty, tập đoàn lớn, ví dụ như FaceBook sử dụng Cassandra do FaceBook phát triển, Google phát triển và sử dụng BigTable,...., và công ty mình đang làm việc sử dụng MongoDB.

Tham khảo: http://en.wikipedia.org/wiki/NoSQL

2. MongoDB là gì?

    MongoDB là 1 hệ thống CSDL mã nguồn mở được phát triển và hỗ trợ bởi 10gen, là CSDL NoSQL hàng đầu được hàng triệu người sử dụng.

    Thay vì lưu trữ dữ liệu dưới dạng bảng và các tuple như trong các CSDL quan hệ thì nó lưu trữ dữ liệu dưới dạng JSON (trong MongoDB được gọi là dạng BSON vì nó lưu trữ dưới dạng binary từ 1 JSON document).

    Các tính năng của MongoDB:
  • Document data model with dynamic schemas
  • Full, flexible index support and rich queries
  • Auto-Sharding for horizontal scalability
  • Built-in replication for high availability
  • Text search
  • Advanced security
  • Aggregation Framework and MapReduce
  • Large media storage with GridFS



3. Cài đặt và sử dụng MongoDB.

    Để sử dụng MongoDB, bạn lên trang chủ của MongoDB và tải về bản mới nhất tại đây. Hiện tại khi viết bài này, tôi đang sử dụng Windows nên không đưa hướng dẫn cài trên Ubuntu hay các hệ điều hành Linux khác. Tuy nhiên, bạn có thể cài đặt MongoDB của 10gen thông qua câu lệnh apt-get trong Ubuntu/Linux.

    Khi tải xong, bạn giải nén file zip vừa tải về vào 1 thư mục nào đó trên ổ cứng, có thể là ổ C, D,....nhưng theo tôi bạn nên đặt ở phân vùng nào đó khác phân vùng windows, và đặt trong thư mục gốc. Ví dụ: D:\mongodb.


    
    Để làm việc thuận tiện, tôi sẽ đặt Environment Variables tới thư mục mongodb này để sử dụng các công cụ của mongo thông qua Command Prompt ở bất kỳ đâu mà không cần phải thay đổi thư mục hiện hành để làm việc rồi mới có thể run các công cụ đó. Tôi làm như sau:

    Sau khi cấu hình xong, tôi bật Command Prompt lên và bắt đầu start mongo server, để thuận tiện hơn đỡ phải gõ lệnh mỗi khi làm việc bạn có thể tạo 1 file .bat lưu nội dung câu lệnh bật mongo server để lần sau chỉ việc click-n-run mà thôi.

    Bình thường, tôi sẽ phải làm như sau để start server mongodb. (Nếu chưa có thư mục nào để lưu trữ database, bạn hãy tạo 1 thư mục nào đó, tôi thường đặt là data)
    

    Ok, tôi đã bật xong mongodb server và nó đang lắng nghe, chờ đợi 1 yêu cầu nào đó kết nối tới cổng 27017 (cổng mặc định của mongodb) và cổng 28017 (cổng dành cho web admin).

    Cảm thấy công việc quá nhàm chán và lặp đi lặp lại khi mỗi lần làm việc phải gõ lệnh như này để start server. Tôi tạo 1 file có tên startmongo.bat rồi ném vào đâu đó để sau này cần chạy mongodb thì không cần phải gõ lệnh ở Command Prompt nữa (có thể ném vào ổ C:\Windows\, để chạy trực tiếp trên hộp thoại Run cũng được). Tôi làm như sau:
 

    Tiếp theo, tôi phải kết nối vào server để làm việc, tôi tiếp tục bật Command Prompt và gõ lệnh, để tiện lợi hơn bạn có thể áp dụng tương tự như bước trên là tạo ra 1 file .bat. Tôi làm như sau:

    Gõ lệnh mongo tại cửa sổ Command Prompt.
 

     Như bạn thấy, bên phía server đã nhận được 1 kết nối, và khi kết nối thành công chúng ta được chuyển ngay tới 1 database mặc định là test.

     Bây giờ tôi cần tạo 1 database và thêm vào 1 user để xác thực khi đăng nhập để quản lý quyền hạn trên database mà tôi tạo ra. Tôi bắt tay vào làm như sau:

     Tôi gõ lệnh use myFirstDatabase và nhận được 1 thông báo từ phía server trả về là "đã chuyển sang database myFirstDatabase". Mặc dù hiện tại chưa hề có database nào tên myFirstDatabase nhưng nhờ có cơ chế tự động cấp phát nên bạn sẽ được cấp phát trước và khi có bất kỳ hành động nào tác động lên việc tạo mới hay chỉnh sửa database đó Mongo sẽ bắt đầu tạo các file database thực sự cho ta. Ngay lúc này, bạn có thể mở thư mục data lên và hoàn toàn thấy rằng không hề có file nào tên myFirstDatabase.
   

     Tiếp tục, tôi tạo 1 tài khoản để xác thực, tôi làm như sau:
   

     Tôi đã có 1 tài khoản trong database này, tôi muốn được xác thực trước khi làm việc với database của tôi, tôi làm như sau:
   

     Server phản hồi về 1 - tức là đã thành công. Tôi đã có được database như mong muốn, tôi cần có nơi để lưu những thông tin, tôi nghĩ ngay tới việc tạo 1 bảng nhưng bảng chỉ là 1 khái niệm trong CSDL quan hệ, trong NoSQL không có khái niệm bảng, nó chỉ có khái niệm Collection (rất gần gũi với Collection Framework trong Java). Collection sẽ có nhiệm vụ lưu trữ và truy vấn thao tác trên các dữ liệu được lưu trong nó, dữ liệu ở đây được phân chia thành các Document (trong CSDL quan hệ được gọi là các tuples). Document là 1 đối tượng dạng JSON chứa các key và value và ta có thể dễ dàng truy xuất giá trị thông qua các key của đối tượng JSON đó.

    Về cơ bản, tôi lập 1 bảng so sánh CSDL quan hệ với MongoDB như sau:
RDBMS MongoDB
Database (.mdf, .ldf) Database (.ns, .x với x = 1, 2, 3, 4, 5...)
Tables Collections
Tuples Documents
Columns, Rows Keys, values
Indexes Indexes
Views, Functions, Procedures, Contraints, Triggers Không có              
Primary Keys ObjectId
Foreign Keys Không có
Login User Authenticate

    Để tạo 1 Collection (tức 1 bảng trong CSDL quan hệ), tôi làm như sau:
 

    Tôi đã có được 1 Collection tên là Game dùng để lưu trữ thông tin các Game mà tôi có, việc tiếp theo cần làm là tôi insert vào Collection này những thông tin cần thiết. Tôi làm như sau:
 

    Nền tảng của NoSQL là Javascript, nên các câu lệnh bạn thấy đều là cú pháp Javascript thôi, không có gì khó khăn cả.

    Sau khi insert 2 game vào trong Collection, tôi muốn hiển thị xem có thật là đã insert vào hay chưa, hoặc đại loại là tôi muốn liệt kê những game mà tôi có. Tôi làm như sau:
 

    Bây giờ, sau 1 thời gian ứng dụng chạy, và bắt đầu sinh ra những thông tin khác cần thêm vào trong mỗi Document, tôi hoàn toàn có thể scale nó dễ dàng mà không hề gặp rắc rối nào khác. Giả sử, tôi thêm vào 1 Game mới có thêm thông tin nào đó chẳng hạn, tôi làm như sau:
 

   Bạn thấy dữ liệu thêm vào, không hề ảnh hưởng gì với những dữ liệu cũ. Trong MongoDB, cái mà xác định duy nhất document là key _id. Vì vậy nếu bạn muốn kiểm tra nghiệp vụ chi tiết hơn như kiểm tra xem tên Game này đã có trong CSDL hay chưa, chưa có thì insert vào có rồi thì báo lỗi chẳng hạn. Việc đó bạn phải validate ở tầng Bussiness Logic vì bản thân MongoDB nó không hỗ trợ cơ chế đó như trong SQL Server hay MySQL.

   Tùy theo dự án, tùy vào trường hợp mà bạn phân tích cái gì thì sử dụng CSDL quan hệ, cái gì thì sử dụng MongoDB để làm sao sử dụng đúng mục đích đem lại hiệu quả cao. Ví dụ như quản lý thông tin người dùng blog, tác giả bài viết, v.v.. bạn dùng CSDL quan hệ để quản lý, ok không vấn đề gì, nhưng để tập hợp dữ liệu dùng để thống kê xem trong tháng này có bao nhiêu người dùng Android, iOS, Firefox, Chrome, Opera Mini để truy cập vào trang web của bạn chẳng hạn thì giải pháp tốt nhất bạn hãy log lại những request đó vào MongoDB vì tác giả nhiều lắm cũng chỉ là 1 mình bạn hoặc vài chục người, bài viết cũng khoảng tầm vài nghìn bài viết hoặc hơn cũng không sao vì CSDL quan hệ vẫn đủ tốt để xử lý. Nhưng request từ người dùng thì là 1 vấn đề, số lượng có thể rất lớn so với bài viết trên blog, vài triệu hoặc vài trăm triệu request (người dùng F5 liên tục thì còn chết nữa), lúc đó việc thống kê sẽ gặp rắc rối khi sử dụng CSDL quan hệ vì chạy khá ì ạch, cho nên giải pháp dùng MongoDB có lẽ tốt hơn hẳn. Đây cũng là 1 ví dụ thực tế điển hình mà bạn có thể va vấp trong quá trình làm việc, và trong cuộc đời coder của mình.

    Bài viết này chỉ là 1 bản chỉ đường (road-map) cho bạn để bạn biết được NoSQL là gì?, MongoDB là gì?, ưu và nhược điểm của nó để giúp thúc đẩy sự tò mò, tìm hiểu công nghệ của bạn. Bài viết không đi sâu vào hướng dẫn chi tiết hay cover lại kiến thức có trên mạng hay trên các trang blog khác và đảm bảo kiến thức nhất quán và phù hợp với thực tế.

    Đây là 1 bản chỉ đường cho bạn khi tiếp cận với NoSQL, nên học gì?, nên làm gì?, làm như nào? áp dụng ra sao? Việc bạn đi đúng hướng hay không là do bạn quyết định. Tôi sẽ luôn chỉ đường để bạn thành công!

42 nhận xét:

  1. Trung Kiên Nguyễnlúc 14:30 23 tháng 4, 2013

    Bạn cho mình hỏi là MongoDB có hỗ trợ PHP không và hỗ trợ thì các câu lệnh tương ứng trong php để thực hiện các thao tác tương ứng là gì với??

    Trả lờiXóa
  2. MongoDB có hỗ trợ PHP và các ngôn ngữ khác. Bạn có thể tìm thấy driver mà mình cần sử dụng để viết mã tại đây: http://docs.mongodb.org/ecosystem/drivers/

    Bạn tải thêm extension MongoDB để cấu hình cho Web Server Application là có thể chạy được.

    Mã để kết nối tới MongoDB thì các bước giống như Java thôi.

    <%php

    $client = new MongoClient("localhost",27017); // kết nối tới server mongodb
    $db = $client->selectDB("testDB");

    %>

    Trả lờiXóa
  3. Bài viết rất hữu ích. Chân thành cảm ơn anh.

    Trả lờiXóa
  4. bài viết hay và chi tiết, cảm ơn anh!

    Trả lờiXóa
  5. Hi Đỗ Mạnh

    Giả sử mình có 1 table log khoảng 2 triệu records thì truy vấn rất chậm, trong mysql. Vậy trong mongodb, tốc độ có cải thiện không?

    Trả lờiXóa
  6. Hi Dick,

    Nếu đó là 1 bảng có sử dụng index và không có mối quan hệ hay sự phụ thuộc với các bảng khác thì NoSQL hay MySQL khi truy vấn có tốc độ tương đương nhau.

    Nếu bảng log 2 triệu bản ghi đó của bạn có quan hệ hay phụ thuộc vào những bảng khác. Khi truy vấn hay sử dụng các pattern để lọc thông tin thì MySQL tỏ ra chậm hơn so với NoSQL.

    Cũng tùy từng trường hợp mới đưa ra được những đánh giá cụ thể. Ví dụ như trường hợp mình đưa ra ở trên.

    Thân!

    Trả lờiXóa
  7. Hi anh Đỗ Mạnh, hiện tại em đang có 1 site bán hàng đang hoạt động sử dụng Magento, Magento mặc định sử dụng MySQL, nhưng xử lý rất chậm, liệu pháp thay thế hiện tại là MongoDB, liệu có cách nào chuyển không ạ

    Trả lờiXóa
  8. Hi TK,
    minh khong lam viec voi Magento nen khong biet :)

    Trả lờiXóa
  9. bài viết rất hay ,cảm ơn Mr.Đỗ Mạnh

    Trả lờiXóa
  10. Thanks man! Bài viết khá rõ ràng!

    Trả lờiXóa
  11. Cám ơn Đỗ Mạnh. chúc blog ngày càng phát triển.

    Trả lờiXóa
  12. bài viết rất bổ ích. Cám ơn Tác giả !

    Trả lờiXóa
  13. bạn cho mình hỏi sao khi mình start mongodb thì không thấy server lắng nghe mà toàn thấy kết nối thất bại @@ mình làm các bước giống bạn hướng dẫn bên trên :D

    Trả lờiXóa
  14. Bạn có thể up ảnh screenshot về lỗi đó lên đây để mọi người hỗ trợ nhé.

    Trả lờiXóa
  15. à hôm qua mình đã mày mò và cài được mongodb rồi, hình như lỗi từ lúc mình tạo file bat khi đang chạy thử server mongodb, sau khi mình xóa file bat và path đi thì lại chạy dc bình thường :D
    tks bạn đã phản hồi :D trước mình hỏi trên một số web khác chẳng ai để ý :))

    Trả lờiXóa
  16. Ok bạn, blog nó khác với 4rum, nội dung không loãng và support cũng "lịch sự" hơn là mấy comment ném đá ^^. Tks bạn đã visit!

    Trả lờiXóa
  17. Hiện giờ mình muốn áp dụng NoSQL vào một ứng dụng nhỏ nhưng mình tìm khá nhiều trên mạng nhưng hầu hết là lý thuyết mà không có demo thực hành nhỉ @@ ý mình không phải là cả một bộ code web lớn có csdl xây dựng theo nosql mà là một ứng dụng nhỏ ví du như kết nối mongodb vào 1 winform được viết bằng C# để thêm, sửa, xóa dữ liệu như mấy bài đầu học SQL Server ý. Hình như mấy cái đó nhỏ quá mấy pro cũng lười viết :)) Nếu bạn có link về mấy cái demo như vậy thì có thể chia sẻ cho mình được không :D

    Trả lờiXóa
  18. Hi bạn, mình không có link demo viết sẵn, những bài viết + demo thường đến bất chợ và theo cảm hứng. Về vấn đề làm dự án liên quan tới MongoDB thực ra không khó và không phải là không có đề tài.


    Thuận theo ý bạn, cuối tuần này mình sẽ làm 1 dự án nhỏ. Với bài viết sắp tới bạn sẽ học được nhiều điều mới mẻ đấy :)

    Trả lờiXóa
  19. Đề tài về 1 site tin tức (nội dung không phải quay tay). Công nghệ: J2SE, J2EE, Webservice sử dụng Restful, MongoDB

    Trả lờiXóa
  20. tks bạn, nếu được bạn code = C# được không, java mình có tự mày mò một thời gian nhưng cũng chỉ tự học được một ít đơn giản chứ không hiểu sâu lắm :D

    mình định tự viết một dự án nhỏ kiểu như web(blog) nhỏ sử dụng nosql nhưng đang băn khoăn liệu dùng nosql mà không dùng sql thì nó có chạy được như bình thường không nữa :)) mà cũng chưa biết nên kết nối csdl theo mô hình nosql với blog thế nào :D
    lên google cũng thấy hướng dẫn làm blog nhỏ = php và một cái hướng dẫn xử lý rock mongodb với php định thử kết hợp 2 cái đó xem sao :)) mỗi tội lại phải ngồi mày mò php từ đầu nên định xin bạn cái demo nhỏ coi thử để có nên mò php tiếp ko :))

    Trả lờiXóa
  21. C# thì mình code cũng được nhưng nó lại không phù hợp với nội dung chính của blog là chuyên về nền tảng Java chứ không phải là .Net nên mình sẽ lấy ví dụ 1 dự án nhỏ để bạn có thể port sang các ngôn ngữ khác dễ dàng nhất

    Trả lờiXóa
  22. ok tks, nếu được thì bạn cho mình xin đoạn kết nối csdl nosql với ứng dụng = C# dc ko ?
    để khi mình port code từ java sang C# tiện so sánh luôn cho đỡ nhầm :))
    chủ yếu là cần cái đoạn kết nối thôi :))
    nếu mình nhớ ko nhầm thì để kết nối SQLServer với java còn cần cài driver hoặc cần làm 1 số bước khác ấy nhỉ @@ không biết NoSQL có cần làm vậy không

    Trả lờiXóa
  23. bạn ơi cho mình hỏi khi tạo csdl trên command line của mongodb thì csdl đó sẽ lưu vào đâu mà làm cách nào để dùng nó kết nối tới 1 ứng dụng bất kỳ

    Trả lờiXóa
  24. hi bạn, khi bạn start server MongoDB bằng câu lệnh:
    mongod --dbpath=Thu_Muc_Chua_DB


    Thì khi tạo CSDL mới nó sẽ được lưu ở đó.


    Về quản lý CSDL, tốt nhất bạn bạn hạn chế dùng command line cho những thao tác phức tạp, đòi hỏi việc chính xác cao vì dùng command line khó debug được xem lỗi ở đâu cũng như các câu lệnh không được "đẹp". Bạn nên dùng RockMongo hoặc các MongoDB IDE hỗ trợ việc quản lý, thao tác bằng UI.


    Cách kết nối tới 1 ứng dụng bất kỳ thì tùy thuộc vào từng ngôn ngữ lập trình, MongoDB đã cung cấp các Driver tương ứng để tương tác với CSDL của MongoDB rồi (Nó giống việc bạn xử lý trong ADO.NET thôi)

    Trả lờiXóa
  25. khi mình thêm đoạn --dbpath=Thu_Muc_Chua_DB vào khi chạy mongod thì không start server mongod được khi xóa đoạn đó đi thì lại chạy dc server @@ khi mình dùng -help thì mới thấy thư mục chứa data mặc định là \data\db ở ổ C @@

    Trả lờiXóa
  26. Trong bài hướng dẫn này có bước chạy server mà bạn.

    http://2.bp.blogspot.com/-DRXlyPYDQio/UVb7am39yAI/AAAAAAAAARU/D3j_2dYDhjw/s1600/mongodb-step3.jpg

    Trả lờiXóa
  27. mình bật command line lên gõ y như trên thì bị lỗi nó ghi " mongod is not ........" còn khi mình gõ cả đường dẫn D:\...\....\mongod --dbpath D:\data thì khi enter xong nó tự động ngắt command line luôn

    Trả lờiXóa
  28. Trường hợp đầu do bạn chưa cấu hình Environment Variables.
    Trường hợp tiếp theo, có nhiều nguyên nhân dẫn đến lỗi trên, bạn kiểm tra lại port, thư mục....


    Nếu không quan trọng việc lưu trữ ở đâu, bạn có thể làm việc trên thư mục lưu trữ mặc định của MongoDB

    Trả lờiXóa
  29. e đang tìm hiểu về cái MongoDB và định chọn nó để làm đề tài tốt nghiệp, web và code php thì e cũng đã ok nhưng về cái này thì e mới tìm hiểu khoản 2 ngày thôi nhưng vẫn chưa cài đặt được và ko hiểu rõ cách sử dụng ra sao, mấy web kia nói ko rõ ràng lắm nên anh có thể giúp e được ko

    Trả lờiXóa
  30. yahoo: bin_sun93, gmail: cntt195@gmail.com có gì liên hệ e gấp gấp nha

    Trả lờiXóa
  31. Bạn có thể hướng dẫn rõ hơn cách so sánh mysql với nosql được k ah?

    Trả lờiXóa
  32. Như mình nói ở trên:

    "Cũng tùy từng trường hợp mới đưa ra được những đánh giá cụ thể. Ví dụ như trường hợp mình đưa ra ở trên."

    Trả lờiXóa
  33. Hướng dẫn của bạn khó hiểu quá. Với những newbie thì ko thể đọc nổi. "Environment Variables tới thư mục mongodb này để sử dụng các công cụ của mongo thông qua Command Prompt.. " . Thề rằng những từ in đậm đó mình ko biết 1 chữ nào :(( . Bạn có thể viết 1 cách dễ hiểu hơn cho các newbie ko?

    Trả lờiXóa
  34. Bạn đang học ngành gì? nếu cntt mà nói không biết thì bạn học lại từ năm nhất đi nha! còn nếu bạn là ngành khác, muốn tìm hiểu thì hãy google đi bạn!

    Trả lờiXóa
  35. Nguyễn Tiến Dũnglúc 10:16 1 tháng 5, 2014

    Khó hiểu là đúng rồi, Vì bạn không biết JavaScript. Bạn nên học JavaScript ngay từ bây giờ, nó là khởi đầu, là nền tảng thấp nhất để đi đến công nghệ mới nhất hiện nay. Nó giúp bạn thực hiện Web App, Mobile App... giúp bạn học Python, NoSQL, v.v.....
    Khi học JavaScirpt bạn sẽ gặp rất nhiều Tool, Library mã nguồn mở, từ đó bạn mới nâng cấp kiến thực được.
    Vì trong trường thường dạy theo hướng mã nguồn đóng: Microsoft, SQL Server, Dot Net.... Nhưng nó cũng là nền tảng quan trọng cho bạn trên con đường phát triển nghề nghiệp.
    Tham khảo:
    http://baseself.com
    http://w3schools.com
    http://vnjs.net

    Trả lờiXóa
  36. Mình đã cung cấp cho bạn cả VĂN BẢN và HÌNH ẢNH minh họa cho các thao tác đó rồi mà bạn vẫn không hiểu thì có khả năng là bạn chưa thực sự đọc 1 cách tâp trung và làm theo những gì hướng dẫn

    Trả lờiXóa
  37. Bài viết rất dễ hiểu, cám ơn tác giả!

    Trả lờiXóa
  38. du
    học nhật bản
    - du hoc nhat ban - du học nhật bản
    - du hoc
    nhat




    Bài viết hay quá, mong anh/chi cung cấp nhiều thông tin hữu
    ích hơn nữa đến bạn đọc

    chúc anh/chi một ngày tốt lành

    Trả lờiXóa
  39. Cho mình hỏi tí nếu mình có 1 cơ sở dữ liệu SQL: tỉnh, huyện, xã có mối quan hệ với nhau vậy khi chuyển sang NoSQL thì mình phải bố trí dữ liệu theo cấu trúc như thế nào.? rất cảm ơn.

    Trả lờiXóa
  40. nói thật thì mình đi làm rồi và mình cũng chả hiểu nổi, có thể bạn đã nghiên cứu qua rồi nên thao tác dễ dàng hơn, chớ mình thao tác lỗi lung tung

    Trả lờiXóa
  41. Có vẻ các bạn chưa sử dụng cmd nhiều nên không hiểu. tìm hiểu nó đi rồi sẽ thấy mọi chuyện thật đơn giản. :)

    Trả lờiXóa
  42. thực ra cài mongodb đơn giản nhưng đọc xong bài của ông này thì nó lại thành phức tạp,chỉ có gõ vài dòng ngắn trong cmd với cài thêm cái tool quản lý mongodb là dc thôi,chịu khó google mấy cái video của người việt nam dạy là cài dc

    Trả lờiXóa

 

code4lifevn team

Thanh niên nghiêm túc :)

Name: Manh Do

Age: years old

Job: Senior Java and Mobile Developer

Country: VietNam

Name: Hung Nguyen

Age: years old

Job: Android Developer

Country: VietNam

Name: Trung PH

Age: years old

Job: Senior iOS and Android Developer

Country: VietNam

Name: Điệp NT

Age: years old

Job: Senior .Net and Android Developer

Country: VietNam