Царство: как импортировать 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();
}