Царство: как импортировать 5 миллионов объектов без сбоев

Я должен перенести базу данных sqlite 5 миллионов кортежей в царство. База данных будет только для консультации. Я начал преобразовывать кортежи 5M из sqlite в json и импортировать данные с помощью createAllFromJson (). Это заняло слишком много времени, поэтому я решил использовать FlatBuffer вместо json и выполнить импорт вручную. Проблема заключается в том, что после нескольких итераций импорта возвращается следующее исключение: io.realm.exceptions.RealmError: неисправимая ошибка. Mmap () не удалось: недостаточно памяти. Я узнал, что закрытие царства действительно важно для такого рода проблем. Так что я заканчиваю тем, что строю и закрываю области каждый раз, когда я повторяюсь, но я все еще получаю эту проблему. Проведя некоторое исследование, я узнал, что царство действительно плохо работает с длинными файлами. Я предполагаю, что мне нужно разделить файл на несколько запросов по отдельности. У меня такой вопрос: как разделить большой файл области на разные маленькие файлы, запросить их и сохранить невероятно быстрый ответ? Правильный ли подход?

У меня есть только 1 RealmModel:

public class Owner extends RealmObject {
    @PrimaryKey
    private long id;
    @Index
    private String name;
    @Index
    private String mix;
    @Index
    private String entry;
    @Index
    private String value;

    // ... Generated getters and setters ...
}

И я вставляю так:

for (int i=0; i<flat_buffer_list.lenght(); i++){
    RealmConfiguration config = new RealmConfiguration.Builder()
                                .name("owner.realm")
                                .build();
    Realm realm=Realm.getInstance(config);
    OwnerList list= flatbuffer.OwnerList.getElementAsRoot(flat_buffer_list.get(i));
    for (int i=0; i<list.lenght(); i++){
       //create the realm object an perform a realm.insert(object)
    }
    realm.close();
}

0 ответов

Другие вопросы по тегам