#database #jakarta-ee #data-structures
#База данных #джакарта-ee #структуры данных
Вопрос:
Я поддерживаю старое веб-приложение J2EE и получаю жалобы на исправление его производительности. Проанализировав его архитектуру данных, я понял, что программист (ы) имеет хэш-наборы для хранения табличных значений, которые увеличиваются до тысяч строк. Учитывая то, что java API говорит о hashset, я действительно думаю, что это действительно очень плохая идея, особенно когда таблицы базы данных упорядочены по некоторым атрибутам, так что отсюда и падение производительности, но мне нужно применить какое-то решение, чтобы смягчить это падение производительности, и пока я думаю о нескольких вариантах, я хотел бы знать, могу ли я использовать какую-то другую структуру данных, которая требует меньше вычислений для хранения данных. Ниже приведен отрывок одного из классов, которые будут сопоставлены с базой данных. имейте в виду, что есть еще около 12 элементов, включая то, что показано здесь:
/* Hibernate attribute mapping */
private Set<Supplier> suppliers = new HashSet<Supplier>();
private Set<Customer> customers = new HashSet<Customer>();
private Set<Tarif> tarif = new HashSet<Tarif>();
private Set<Contribution> contributions = new HashSet<Contribution>();
private Set<Premium> premiums = new HashSet<Premium>();
private Set<Alert> alerts = new HashSet<Alert>();
private Set<CustomerInvoice> customerInvoices = new HashSet<CustomerInvoice>();
private Set<Monitoring> monitorings = new HashSet<Monitoring>();
private Set<Criterions> criterions= new HashSet<Criterions>();
private Set<User> registeredUsers= new HashSet<User>();
private Set<Cost> costs= new HashSet<Cost>();
Ответ №1:
Возможно, вам подойдет использование TreeSet. Это обеспечивает O (log (n)) производительность доступа.