Trang chủ Lập trình Ionic Framework Chọn giải pháp lưu trữ dữ liệu phù hợp cho Ionic: Ionic...

Chọn giải pháp lưu trữ dữ liệu phù hợp cho Ionic: Ionic Storage, Capacitor Storage, SQLite, hay Ionic Secure Storage?

612
0

Bạn muốn lưu trữ dữ liệu cục bộ trong ứng dụng Ionic của mình ? Thông thường, đó là một nhiệm vụ đơn giản, với các công cụ có sẵn ngày nay như Ionic Storage , Capacitor Storage hoặc chỉ cơ sở dữ liệu SQLite vốn có của ứng dụng.

Nhưng thực sự thì sự khác biệt giữa các tùy chọn lưu trữ này là gì? Việc lựa chọn công cụ lưu trữ ảnh hưởng đến ứng dụng của bạn như thế nào, những gì nên được lưu trữ và công cụ nào cung cấp kết quả tốt nhất cho các nhu cầu cụ thể của bạn?

Đây là bài đăng của khách mời từ Simon Grimm, Ionic Insider và là nhà giáo dục tại Học viện Ionic . Simon cũng đã tạo ra cuốn sách Practical Ionic , hướng dẫn xây dựng các ứng dụng Ionic trong thế giới thực với Capacitor và Firebase.

Trích dẫn

Hôm nay chúng ta sẽ khám phá sự khác biệt giữa Lưu trữ Ionic, Lưu trữ tụ điện, lưu trữ SQLite thuần túy và giải pháp Lưu trữ an toàn của Ionic. Chúng tôi sẽ xem xét kỹ lưỡng cách chúng hoạt động và điều gì khiến chúng trở nên tuyệt vời.

Cuối cùng, tôi sẽ đưa ra các đề xuất cho từng trường hợp để bạn có thể tận dụng tối đa ứng dụng Ionic của mình!

Ionic Storage

Có lẽ cách phổ biến nhất để lưu trữ dữ liệu đối với các nhà phát triển IonicIonic Storage . Mặc dù trước đây nó chỉ có sẵn cho các dự án Angular, nhưng bạn có thể sử dụng Ionic Storage với tất cả các framework kể từ phiên bản 3!

Về cốt lõi, Ionic Storage là một mô-đun Lưu trữ giá trị quan trọng cho các ứng dụng Ionic .

constructor(private storage: Storage) { }

setData(value: any) {
    // Store the value under "my-key"
    this.storage.set('my-key', value);
}

getData() {
    // Get the value under "my-key"
    this.storage.get('my-key');
}

Bạn có thể ném bất kỳ dữ liệu hoặc đối tượng nào vào đó và thông tin sẽ được lưu trữ.

Nhưng ở đâu?

Đó là một trong những lập luận lớn nhất ủng hộ Ionic Storage; Ionic Storage sẽ tự động chọn công cụ lưu trữ cơ bản tốt nhất có thể có trên nền tảng hiện tại.

Thông thường, điều này có nghĩa là IndexedDB hoặc lưu trữ cục bộ . Trên hết, bạn có thể cài đặt trình điều khiển SQLite để trong ứng dụng iOS hoặc Android gốc, SQLite sẽ được sử dụng thay thế.

Tất cả điều này sau đó sẽ diễn ra tự động và bạn có thể chạy / thử nghiệm ứng dụng của mình cả trên web và trên thiết bị di động mà không nhận thấy bất kỳ sự khác biệt nào và mã giống nhau!

Điểm cộng lớn nhất của Ionic Storage là dễ sử dụng trên tất cả các nền tảng với cùng một API, đồng thời cho phép truy cập vào cơ sở dữ liệu SQLite của một ứng dụng trên thiết bị thực.

Nếu ứng dụng của bạn chỉ sử dụng localstorage hoặc IndexedDB, hệ điều hành cơ bản có thể xóa dữ liệu của bạn bất kỳ lúc nào, điều này khiến các tùy chọn này không ổn định và an toàn 100%.

Mặc dù cách sử dụng rất dễ dàng, nhưng không có cách nào để truy vấn dữ liệu cụ thể và bạn chỉ có thể truy xuất tất cả thông tin được lưu trữ dưới một khóa cụ thể. Tuy nhiên, thông tin đó có thể là bất cứ thứ gì bạn muốn cho đến dữ liệu có kích thước trung bình, vì với các đối tượng lớn hơn, quá trình tải sẽ mất nhiều thời gian hơn và hiệu suất giảm.

Capacitor Storage

Capacitor Storage có lẽ bị bỏ qua nhiều lần do sự phổ biến của Ionic Storage trong quá khứ, nhưng nó cung cấp một cách an toàn và đáng tin cậy để lưu trữ các phần nhỏ dữ liệu một cách bền bỉ trên iOS và Android.

Plugin này sẽ sử dụng UserDefaults trên iOS và SharedPreferences trên Android. Các lớp gốc này chủ yếu được sử dụng để xác định trạng thái ứng dụng mặc định và 100% liên tục vì dữ liệu được lưu trữ trực tiếp bên trong cài đặt hệ điều hành.

Tuy nhiên, điều này có thể phải trả giá, vì lớp Android có một lưu ý riêng về nó:

“Lớp này đảm bảo tính nhất quán mạnh mẽ. Nó sử dụng các thao tác đắt tiền có thể làm chậm ứng dụng ”

Nhìn từ bên ngoài, cách sử dụng chủ yếu giống như cách sử dụng của bộ lưu trữ khóa-giá trị:

import { Storage } from '@capacitor/storage';

setData(value: string) {
    // Store the value under "my-key"
    Storage.set({ key: 'my-key', value: value });
}

getData() {
    // Get the value under "my-key"
    Storage.get({ key: 'my-key' });
}

Sự khác biệt nhỏ là bạn chỉ có thể lưu trữ các chuỗi với Bộ lưu trữ Tụ điện!

Điều đó không có nghĩa là bạn không thể lưu trữ bất kỳ đối tượng nào khác, nhưng bạn sẽ phải xâu chuỗi chúng khi lưu trữ và phân tích cú pháp chúng trở lại một đối tượng khi tải dữ liệu. Một lần nữa, điều này có thể làm chậm hiệu suất của bạn:

setData() {
    const user = {
        name: 'Simon',
        age: 31,
        country: 'Germany'
    };

    Storage.set({key: 'my-key', value: JSON.stringify(user) });
}

async getData() {
    const { value } = await Storage.get({ key: 'my-key' });
    const user = JSON.parse(value);
}

Tất nhiên, bạn cũng có thể sử dụng Tụ lưu trữ trên web, nhưng plugin sẽ rơi trở lại công cụ lưu trữ cục bộ không ổn định hơn bên trong Ứng dụng web tiến bộ.

Bởi vì chúng tôi chỉ có thể lưu trữ các chuỗi và các hoạt động để truy cập dữ liệu từ các lớp hệ điều hành gốc có khả năng kém hiệu quả hơn, tùy chọn này không có nghĩa là thay thế cho cơ sở dữ liệu cục bộ của bạn.

Đó là một cách an toàn và đáng tin cậy để lưu những thứ như ngôn ngữ ứng dụng do người dùng lựa chọn, màu sắc hoặc các tùy chọn khác, nhưng cũng giống như Ionic Storage, không có sẵn truy vấn dữ liệu.

SQLite

Không phải chúng ta đã nói về SQLite khi chúng ta xem xét Ionic Storage? Có và không.

Sự thật là bạn có thể thêm trình điều khiển SQLite vào Ionic Storage để sử dụng nó trên thiết bị. Tuy nhiên, bạn không thực sự truy cập sức mạnh thực sự của cơ sở dữ liệu SQLite bên dưới vì bạn không thể chạy các truy vấn SQL — bạn bị giới hạn ở API khóa / giá trị.

Tùy chọn này cũng chỉ có sẵn cho các ứng dụng gốc, dưới dạng plugin Cordova hoặc được đề xuất nhiều hơn với plugin Tụ điện . Đối với web, không cái nào trong số này sẽ hoạt động và bạn phải tìm một giải pháp khác.

Tuy nhiên, cơ sở dữ liệu SQLite vốn có bên trong mọi ứng dụng dành cho thiết bị di động có thể khá mạnh và bằng cách truy cập trực tiếp vào nó bằng một plugin, bạn có thể khai thác tất cả các chức năng.

Điều này có nghĩa là, bằng cách sử dụng một trong những plugin đó, bạn có thể tạo các truy vấn phức tạp hơn để truy xuất thông tin phù hợp từ cơ sở dữ liệu của mình bằng SQL:

getUsers() {
    return this.sqlite.execute({ statements: "SELECT * FROM users WHERE company IS ‘Ionic’;" });
}

Một số plugin thậm chí còn cung cấp một cách để nhập kết xuất JSON vào cơ sở dữ liệu cục bộ của bạn hoặc bạn có thể có một số câu lệnh hạt giống để tạo và lấp đầy cơ sở dữ liệu ban đầu.

Tùy chọn này chỉ được đề xuất nếu bạn biết cách viết SQL và ứng dụng của bạn cần hoạt động với nhiều dữ liệu mà việc truy vấn cơ sở dữ liệu cục bộ có ý nghĩa để cải thiện hiệu suất.

Nếu mục đích duy nhất của bạn là lưu trữ và truy xuất tất cả dữ liệu mà không có bất kỳ bộ lọc, cập nhật hoặc truy vấn nào khác, việc sử dụng trực tiếp SQLite có thể không mang lại cho bạn bất kỳ lợi ích nào so với các tùy chọn trước đó.

Cũng lưu ý rằng SQLite thực sự là một Lite phiên bản của một cơ sở dữ liệu SQL thông thường và chỉ đi kèm với một số lượng hạn chế của các kiểu dữ liệu .

Security-Sensitive Apps

Các nhóm xây dựng các ứng dụng nhạy cảm với bảo mật yêu cầu mã hóa nên xem xét Ionic Secure Storage , một kho lưu trữ dữ liệu hiệu suất cao, sẵn sàng cho doanh nghiệp. Ngoài những lợi ích mà các plugin cộng đồng cũng dựa trên SQLite cung cấp, Lưu trữ an toàn có mã hóa AES 256-bit, một API bao gồm nhiều trường hợp sử dụng (bạn có thể chọn giữa các phương pháp tiếp cận khóa / giá trị hoặc SQL) và các dịch vụ tư vấn và hỗ trợ của Ionic là bao gồm.

Khi nào sử dụng lưu trữ dữ liệu nào?

Tất cả bốn giải pháp này đều là những lựa chọn phù hợp cho ứng dụng Ionic của bạn. Tuy nhiên, bạn muốn tối ưu hóa hiệu suất và độ tin cậy của ứng dụng, vì vậy, bạn nên lựa chọn dựa trên những câu hỏi sau:

  1. Lượng dữ liệu tôi cần lưu trữ là bao nhiêu?
  2. Ứng dụng của tôi nên chạy trên nền tảng nào?
  3. Tôi có cần nhiều chức năng hơn lưu / tải tiêu chuẩn không?
  4. Tôi có đang xây dựng một ứng dụng nhạy cảm với bảo mật không?

Dữ liệu

Nếu bạn chỉ muốn lưu trữ một số cài đặt nhỏ, hãy sử dụng Bộ lưu trữ tụ điện. Nếu có nhiều thông tin bạn muốn lưu trữ, bao gồm cả các vật thể lớn hơn, Ionic Storage thường sẽ hoạt động tốt hơn.

Vì Ionic Storage và trực tiếp SQLite về cơ bản giống nhau ( đều lưu trữ dữ liệu trong SQLite trên một thiết bị ) nên khi nói đến lượng dữ liệu, bạn cũng phải tính toán các yếu tố khác!

Nền tảng

Việc sử dụng các plugin SQLite gốc yêu cầu ứng dụng Ionic của bạn chạy như một ứng dụng trên iOS hoặc Android. Nếu ứng dụng của bạn cũng nên có sẵn dưới dạng PWA, thì việc sử dụng Ionic Storage với API liên tục trên tất cả các nền tảng có thể sẽ hoạt động tốt hơn.

Ngoài ra, Capacitor Storage chỉ thực sự tỏa sáng khi được sử dụng bên trong ứng dụng gốc nơi bạn có thể truy cập cài đặt hệ điều hành.

Truy vấn

Cả Ionic và Capacitor Storage đều có nghĩa là dễ dàng lưu trữ và đọc dữ liệu mà không cần bất kỳ logic lớn hơn nào. Khi lượng dữ liệu của bạn vượt quá một giới hạn nhất định và bạn muốn truy vấn một tập hợp con dữ liệu của mình thay vì tải mọi thứ cùng một lúc, thay vào đó, sử dụng tích hợp SQLite trực tiếp là lựa chọn hợp lý.

Bảo mật

Nếu ứng dụng của bạn cần lưu trữ một lượng lớn dữ liệu nhạy cảm, hãy sử dụng Bộ nhớ an toàn. Không công ty nào phải chịu rủi ro về hậu quả: mất dữ liệu, truy cập tài khoản trái phép, khách hàng tức giận, thiệt hại thương hiệu, v.v. Ngoài ra, việc cập nhật các phương pháp hay nhất về bảo mật theo thời gian có thể khó khăn do tất cả các công việc khác mà các nhà phát triển dự kiến ​​sẽ thực hiện.

Mặt khác, các tùy chọn cộng đồng hoạt động tốt cho các trường hợp sử dụng và dữ liệu ít nhạy cảm hơn.

Chọn giải pháp lưu trữ dữ liệu phù hợp

Không có giải pháp chung cho tất cả để chọn công cụ lưu trữ phù hợp cho ứng dụng Ionic của bạn.

Cũng giống như một số dự án tốt hơn với React, Vue hoặc Angular, bạn cần hiểu nhu cầu của ứng dụng và đưa ra lựa chọn dựa trên các yếu tố khác nhau và yêu cầu cụ thể của bạn.

Bên cạnh đó, có các tùy chọn khác có sẵn mà chúng ta chưa thảo luận trong bài đăng này như PouchDB , thay vào đó đang theo cách tiếp cận NoSQL của cơ sở dữ liệu JS cục bộ.

Đối với tất cả những ai muốn khám phá tất cả các tùy chọn và xây dựng các ứng dụng Ionic tốt hơn, tôi cũng đang điều hành một trường học trực tuyến đầy đủ với hơn 60 khóa học video Ionic, các mẫu và một cộng đồng hỗ trợ – hãy xem Học viện Ionic và truy cập vào nhiều kiến ​​thức tài liệu để nâng cao kỹ năng phát triển Ionic và Capacitor của bạn ngay hôm nay.

Tái bút: Và đừng quên đăng ký kênh YouTube của tôi để nhận các hướng dẫn mới về Ionic hàng tuần!

Nguồn ionicframework.com

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.