2015-11-10 17 views
12

Tôi đang triển khai ứng dụng lưu dữ liệu tại một số điểm (không liên quan giữa chúng) bằng cách sử dụng Realm. Ví dụ:Lĩnh vực: Sử dụng một hoặc nhiều cõi trong một ứng dụng (và một hoặc nhiều sơ đồ)

  1. Lưu các mục mà người dùng ưa thích.
  2. (Ứng dụng có một cuộc trò chuyện) Lưu các cuộc đàm thoại chat và hằng số gần đây
  3. Thực hiện một bộ nhớ cache dai dẳng đối với một số yêu cầu của ứng dụng
  4. Lưu tìm kiếm gần đây/form để cung cấp autocompletion

(Cho phép đặt tên cho từng điểm trong số đó dưới dạng mô-đun/gói)

Mỗi mô-đun/gói có một số RealmObjects để duy trì. Tôi nên tổ chức điều này như thế nào? Từ quan điểm của mã sạch, hiệu suất hoặc bất cứ điều gì tôi nên quan tâm

Lựa chọn A: Sử dụng (mặc định) lĩnh vực độc đáo với một sơ đồ độc đáo:

Sử dụng Realm.getInstance(context)

Tiếp cận đến đúng RealmObjects trong mỗi module/gói

Lựa chọn B: Sử dụng nhiều cõi với giản đồ mặc định

Chỉ định một tên khác trong RealmConfiguration cho lĩnh vực được sử dụng trong mỗi mô-đun (sử dụng lược đồ mặc định).

Vì dữ liệu thuộc về các phần khác nhau của ứng dụng, bị cô lập và không được kết nối với nhau, hãy sử dụng tên lĩnh vực khác nhau cho từng mô-đun.

Tùy chọn C: Sử dụng nhiều cõi và phạm vi các lớp mô hình được sử dụng với lược đồ cho mỗi gói ứng dụng Chỉ định tên và lược đồ cho từng gói riêng biệt. Ví dụ:

public static Realm getChat(Context context){ 
    RealmConfiguration config = new RealmConfiguration.Builder(context) 
      .name("chat.realm") 
      .schemaVersion(1) 
      .setModules(new ChatRealmModule()) 
      .build(); 
    return Realm.getInstance(config); 
} 

// Create the module 
@RealmModule(classes = { ChatRoom.class, ChatMessage.class, ChatUser.class}) 
public static class ChatRealmModule{ 
} 

Tùy chọn D: Khác?

Trả lời

9

Nếu dữ liệu của bạn thực sự bị ngắt kết nối hoàn toàn, tôi sẽ đi kèm với tùy chọn C) Nó tạo sự tách biệt rõ ràng. Việc di chuyển dễ dàng hơn để xử lý và cũng có một hiệu suất rất nhỏ khi Realm phải lặp qua tất cả các lớp mô hình trong một Realm theo thời gian.

Nhưng không có tùy chọn nào là "sai".

1

Có bạn có thể, mặc dù bạn có thể sẽ thường có nhiều lớp học ở trên Realm

Configuring Other Reams cho thấy làm thế nào để xác định đường dẫn tập tin khác nhau, ví dụ:

RealmConfiguration myConfig = new RealmConfiguration.Builder(context) 
    .name("myrealm.realm") 
    .schemaVersion(2) 
    .modules(new MyCustomSchema()) 
    .build(); 

RealmConfiguration otherConfig = new RealmConfiguration.Builder(context) 
    .name("otherrealm.realm") 
    .schemaVersion(5) 
    .modules(new MyOtherSchema()) 
    .build(); 

Realm myRealm = Realm.getInstance(myConfig); 
Realm otherRealm = Realm.getInstance(otherConfig); 

@RealmModule(classes={Abc.class, Pqrs.class, Xyz.class}) 
class MyCustomSchema{} 

@RealmModule(classes={Abc1.class, Pqrs2.class, Xyz2.class}) 
class MyOtherSchema{} 
Các vấn đề liên quan