Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Сохранение объектов из массивов ссылок на объекты


Автор: Vampire2012 9.3.2013, 23:41
Объект имеет поля - текстовые и числовые..
А так же массив ссылок на такие же объекты

(количество элементов массива может быть различным от 1 до 15)

и таких объектов примерно 200 тыс..

Подскажите как их в MySQL сохранять (а потом снова загружать в память)
Или может быть какой другой способ хранения и загрузки посоветуете?

Вот что внутри объекта:
пусть он будет называться Object1
Код

  private int ...;
    private int ...;
    private String ...;
    private Object1 ... ;
    private int ...;
    private String ...;
....
....
    private ArrayList<Object1> ....;
    private ArrayList<Object2> ...; 


и таких объектов несколько сот тысяч..
их необходимо периодически сохранять на жесткий диск..
1) Во время выполнении программы, количество объектов пополняется и через определенный промежуток времени всю структуру нужно сохранить..
2) в другой программе эти объекты планируется загружать в память и работать с ними (поиск, сортировки и т.д.)
__
я пробовал сохранять их просто классами через сериализацию
Код

public class Object1 implements Serializable {
...

но сохранение долгое и спустя время почему то выдает ошибку переполнения стека...

Автор: Stolzen 10.3.2013, 00:19
Сериализуйте это дело в какой-нибудь json

Автор: batigoal 11.3.2013, 16:00
Для сериализации, по моим экспериментам, самым быстрым способом был Google Protobuf. Но я не сравнивал скорость с прямой записью в базу.

Что же до оптимизации, то можно предложить делать сохранение в фоновом thread-пуле, если это архитектурно возможно.

Автор: ReFLeXive 12.3.2013, 10:00
В СУБД HSQLdb есть 2 интересных типа данных: первый может хранить сериализуемые Java объекты (http://hsqldb.org/doc/2.0/guide/sqlgeneral-chapt.html#sgc_java_objects), а второй содержать массивы элементов (http://hsqldb.org/doc/2.0/guide/sqlgeneral-chapt.html#sgc_array).
Но данные массивы не могут хранить LOB'ы.
Посмотрите, может быть это вам подойдет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)