“Vương quốc” mới cho những con dân “di động”

Nếu là một người làm việc quen thuộc với các hệ điều hành dành cho mobile như IOS hay Android, hẳn các developers đều đã quá quen với SQLite hay CoreData – các công cụ hỗ trợ lưu trữ data. Những năm gần đây, đã có 1 hiện tượng nổi lên và đc cho là có thể thay thế 2 thanh niên kia và đó chính là Realm với khẩu hiệu trên chính trang chủ: “Start in minutes, port your app in hours, and save yourself weeks of work.”. Vậy trong blog ngày hôm nay, chúng ta hãy cùng tìm hiểu xem Realm là gì và lí do vì sao càng ngày nó càng được ưa chuộng trên thế giới nhé.

I. Realm là gì?

  • Vào tháng 9 năm 2016, Realm Platform được giới thiệu đến đông đảo các coder trên thế giới bởi MongoDB. Realm là một hệ thống quản lý cơ sở dữ liệu đối tượng mã nguồn mở, ban đầu được tạo ra và hỗ trợ chỉ trên 2 nền tảng là IOS và Android.
  • Nhưng sau đó, vì mức độ phổ biến được lan rộng, MongoDB đã phát triển thêm cho các nền tảng cũng mới nổi khác như React Native hay Xamarin. Các loại ngôn ngữ được hỗ trợ cho đến nay bao gồm Objective C, Kotlin(Android), Java(Android), Swift, C#(Xamarin) và JavaScript(NodeJs, React Native).
  • Vậy chính xác thì chức năng chính của Realm là gì? Realm cho phép sự đồng bộ 2 chiều giữa Realm Object Server và database của client. Realm cho phép tương tác trực tiếp với cơ sở dữ liệu cả offline và mô hình client-server chạy realtime, từ đó giải quyết được vấn đề đồng bộ dữ liệu.

II. Concept của Realm

  • Do được MongoDB phát triển nên điều tất nhiên là Realm cũng là NoSQL, mọi phương thức tương tác với Realm đều thông qua Object. Chính vì vậy, các Object được sử dụng sẽ chính là cấu trúc dữ liệu được lưu vào Database. Dưới đây là ví dụ khi sử dụng Realm với React Native(JavaScript)
  • Như ví dụ trên, syntax của Realm rất đơn giản và ngắn gọn, object được tạo trong code sẽ được map với model trong cơ sở dữ liệu. Diều này tạo ra sự thoải mái và dễ dang trong việc viết code và quản lí model của các dev.
  • Ngoài là 1 Database thông thường, Realm còn hỗ trợ Realtime rất tốt thông qua Realm live objects. Data sẽ được update ở mọi nơi và tự động mọi lúc.

III. Ưu điểm và Nhược điểm

    Ưu điểm:

  • Về mặt hiệu năng: Realm được đánh giá là có tốc độ truy vấn nhanh hơn so với SQLite khá nhiều.Vậy tại sao Realm lại nhanh hơn? Đó là do dữ liệu kết nối trực tiếp với Database chứ không tạo ra bản sao khi truy vấn -> dẫn đến các thao tác với cơ sở dữ liệu sau khi truy vấn đều thực hiện thẳng trên Database -> tốc độ thực thi tăng lên đáng kể.
  • Về mặt sử dụng: Cú pháp của Realm khá thân thiện, vẫn đều là các cú pháp cơ bản của các loại ngôn ngữ được hỗ trợ. Ví dụ với React Native, syntax của Realm vẫn đều là JavaScript -> Người sử dụng không phải mất thời gian học cách sử dụng quá nhiều. Giống với câu khẩu hiệu đã được trích dẫn ở đầu bài viết: “Bắt đầu trong vài phút, chuyển ứng dụng của bạn trong vài giờ và tiết kiệm cho bạn hàng tuần làm việc.”.
  • Về mặt hỗ trợ: Realm hỗ trợ hầu hết các ngôn ngữ phổ biến hiện nay được dùng cho lập trình mobile như Swift, Kotlin hay các ngôn ngữ cross-platform như React Native. Bên cạnh đó, trên docs chính thức của mình, Realm cũng có hướng dẫn và các SDK đi theo từng loại ngôn ngữ rất đầy đủ và chi tiết.

   Nhược điểm:

  • Realm cho đến hiện nay vẫn còn đang phát triển, dẫn tới có thể có 1 vài lỗi hệ thống mà chưa rõ nguyên nhân.
  • Realm là 1 hệ thống mã nguồn mở, chính vì vậy nó luôn có những nhược điểm của 1 hệ thống opensource vẫn có.

IV. Cross-platform

  • Realm hỗ trợ chuyển đổi platform rất tốt. Bằng chứng cho việc này đó là bạn có thể export ra .realm file từ Android và dùng đúng file đấy import vào iOS, và ngược lại chỉ với vài dòng lệnh.

Bài viết trên chỉ là vài lời giới thiệu ngắn gọn về Realm Database. Mong rằng nó có thể mang lại chút kiến thức cho các bạn nào đang bắt đầu tìm hiểu về lập trình mobile cũng như các công cụ hỗ trợ về cơ sở dữ liệu chuyên dùng cho mobile. Bài blog tiếp theo sẽ là 1 bài hướng dẫn cụ thể tạo 1 App cơ bản cùng với Realm, mong các bạn sẽ đón đọc số tiếp theo.

Add a Comment

Scroll Up