tìm hiểu về Realtime Database

Thêm Firebase SDK vào Android project và tìm hiểu về Realtime Database

Thêm Firebase SDK vào Android project và tìm hiểu về Realtime Database

Chào các bạn,

Nay mình sẽ tiếp tục qua bài mới về Firebase nhé. Lưu ý: Chỉ dành cho Android Studio 2.*

Cụ thể bài này gồm 2 phần là:

  • Thêm Firebase SDK vào project
  • Tìm hiểu về Realtime Database

1/ Thêm Firebase SDK vào project

Lưu ý trước khi cài, bạn phải chắc chắn là Android SDK đã có 2 phần quan trọng này (nếu đã cài mà chưa update thì nên update lên bản mới nhất):

http://2.pik.vn/201799d0d083-9ebb-4f6e-86d0-46eb92a0b1d3.png

Đầu tiên, ta mở project ở Android Studio lên, đợi Gradle chạy hết tác vụ.

Sau đó, ta sẽ mở lần lượt 2 file build.gradle ở cấp độ project và cấp độ app.

http://2.pik.vn/2017e2103fec-0c11-49c4-a796-d7f4d30c71e5.png

Ta sẽ bắt đầu ở cấp độ Project trước:

Tại dependencies, các bạn thêm:

classpath 'com.google.gms:google-services:3.1.0'

Sau đó ta qua ở cấp độ app:

Đặt dòng này vào tận cuối cùng file:

apply plugin: 'com.google.gms.google-services'

Và trên dependencies, ta thêm:

ext {
    PLAY_SERVICES_VERSION = '9.6.0'
}

Và bây giờ vào dependencies, ta thêm:

compile "com.google.firebase:firebase-auth:$PLAY_SERVICES_VERSION"
compile "com.google.firebase:firebase-database:$PLAY_SERVICES_VERSION"
compile "com.google.firebase:firebase-storage:$PLAY_SERVICES_VERSION"
compile 'com.firebaseui:firebase-ui:0.6.0'

Giải thích sơ: ta khởi tạo biến PLAY_SERVICES_VERSION để thực hiện đồng bộ nếu có update hay downgrade cho tiện 😀

Và lúc này các bạn có thể nhấn Sync Now để bắt đầu Sync cho project của mình, Sync xong là các bạn có thể sử dụng được Firebase rùi 😀

Ở đây mình chỉ cài 3 loại là:

  • Firebase Database (Realtime Database)
  • Firebase Auth
  • Firebase Storage

(Firebase UI là thư viện hỗ trợ ta tương tác UI với Firebase nha).

Và xuyên suốt trong quá trình hướng dẫn, mình sẽ hướng dẫn các bạn 3 cái như trên 😀

2/ Tìm hiểu về Realtime Database

Realtime là gì? Realtime là thời gian thực. Vd đơn giản ở đây là khi bạn dùng Messenger của FB, gửi tin nhắn cho bạn A, bạn A sẽ nhận dc ngay tin nhắn của bạn.

Và Firebase Realtime Database giúp chúng ta có thể đồng bộ dữ liệu theo thời gian thực một cách tối ưu nhất cũng như là đơn giản giữa hệ thống và người dùng.

Với Realtime Database, những ứng dụng như Chat, game, cập nhập thị trường,… nay trở nên đơn giản nhất có thể.

Và đi chuyên sâu về phần này, mình sẽ nói rõ hơn:

  • Realtime DB là một dạng database không cấu trúc (NoSQL), lưu toàn bộ thông tin dưới dạng JSON.
  • Ta sẽ được cấp 1 JSON cấp cha, và từ đó tạo ra các cây cấp con để lưu trữ, tùy biến,…
  • Vì là không cấu trúc, nên khả năng Query lấy dữ liệu như SQL rất hạn chế, cho nên bạn phải tùy biến dữ liệu tối ưu nhất cho vụ này.
  • Ngoài ra RDB còn hỗ trợ bảo mật (quyền read,write theo điều kiện).

Trong Console Firebase, các bạn có thể xem được Database nó hiển thị, và tab Rules bên cạnh 😀

Và khi xài RDB, các bạn khỏi cần lo về vụ phải parse JSON ra object, vụ này Firebase Lib nó lo hết cho mình nhé :D, Ta chỉ việc request và đợi kết quả trả về thôi.

Và tất nhiên, trong Project của chúng ta phải có model, các model phải tuân thủ như sau:

  • Các properties phải là private hoặc protected.
  • Phải có đầy đủ Getter/Setter
  • Phải có 1 hàm khởi tạo không  có tham số.

Để dựng chung các bài hướng dẫn này, mình sẽ dựng 1 app về Chat Room cộng đồng nhé 😀

Các models dự tính:

class Room
{
private String id;
private String roomName;
private long createdDate;

// getter/setter/hàm khởi tạo bên dưới
...
}

class Message
{
private String id;
private String roomID;
private String message;
private String createdByName;
private String createdByID;
private long createdDate;


// getter/setter/hàm khởi tạo bên dưới
...
}

Tạm thời xong phần model trước nhé các bạn :D, ở bài sau chúng ta sẽ tìm hiểu cách CRUD với RDB 😀

Bài viết của mình về tìm hiểu về Realtime Database kết thúc tại đây.

Cám ơn các bạn đã quan tâm theo dõi!

facebook
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Bình luận qua Facebook