Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JTable BigInteger row count 
V
    Опции темы
Ccoder
  Дата 9.8.2011, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 15.2.2011

Репутация: нет
Всего: нет



Здравствуйте.

Значить хочу спросить, что в этом случае можно-бы сделать.

Проблама:
Хочу изобразить очень большую базу данных в JTable размер строк которой > MAX_INTEGER

При таком случае естественно нужно сделать кешенирование и написать класс унаследуемый от AbstractTableModel. По этому делу есть неплохая статья тут.

Суть проблемы:
Код

    @Override
    public int getRowCount()
    {
        return rowCount;
    }

где rowCount являеться как BigInteger (или  Long).



Вот что тут делать  smile

Добавлено @ 01:43
P.S.
На ум приходит только переписать AbstractTableModel, что за собой может повести переписку JTable и другие неприятные моменты.
А что Вы думаете?

Это сообщение отредактировал(а) Ccoder - 9.8.2011, 01:52
PM MAIL   Вверх
Stolzen
Дата 9.8.2011, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Насколько мне известно, есть компоненты Jide Grids (платные), которые могут деражать в себе данных больше, чем MAX_INT. Но точно не уверен. Их можно попробовать бесплатно.

Думаю, в таком случае лучше просто не выводить сразу все-все строки. И использовать обычный JTable. Можно поинтересоваться, зачем такая необходимость выводить сразу все?


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
jk1
Дата 9.8.2011, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Цитата

Хочу изобразить очень большую базу данных в JTable размер строк которой > MAX_INTEGER


По юзабилити напоминает ночной горшок с ручкой на дне. Чтобы эффективно работать с миллиардами строк в любом случае нужны поиск и фильтрация. Гораздо проще показывать сразу результаты фильтра\поиска и не решать проблему отображения заведомо неоперабельных данных. 


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Skipy
Дата 10.8.2011, 10:50 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 4
Всего: 16



Цитата(Ccoder @ 9.8.2011,  01:39)
Значить хочу спросить, что в этом случае можно-бы сделать.

Проблама:
Хочу изобразить очень большую базу данных в JTable размер строк которой > MAX_INTEGER

А что Вы думаете?

Я думаю, что для начала надо посчитать объем памяти, которая понадобится, чтобы просто удержать данные в модели. MAX_INTEGER - это 2Гб. Пусть строка таблицы состоит из одного элемента - строки длиной 5 символов. Тогда мы имеем на строку таблицы по минимуму 10 байт на данные (массив символов) + 8 байт на объект (если я правильно помню) + 12 байт на организацию строки (длина, смещение, ссылка на массив символов) + 4 байта на ссылку на строку в модели. Итого - 34 байта. Это абсолютный минимум. Умножим на 2Гб строк - и получим 68Гб - ШЕСТЬДЕСЯТ ВОСЕМЬ ГИГАБАЙТ!!! - памяти.

Ccoder, Вы все еще хотите показывать всю таблицу, или же перейдете к обдумыванию постраничного просмотра?

Это сообщение отредактировал(а) Skipy - 10.8.2011, 10:51


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
jk1
Дата 10.8.2011, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Skipy

Если почитать ссылку, которую дал ТС, то там проблема с памятью худо-бедно решается. А вот юзабилити таблицы с миллиардами строк - вещь очень смонительная.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Skipy
Дата 10.8.2011, 15:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 4
Всего: 16



Проблема с памятью в этой статье решается именно худо и бедно. Перенос 68Гб на диск скажется на производительности волшебным образом. В смысле, нужно будет волшебство, чтобы это приемлемо работало. И в первую очередь - в плане быстродействия (что входит в юзабилити). Для быстрой работы необходимо будет создавать индексы, средства быстрого поиска, - т.е., по сути, повторять базу данных. А в памяти будет тем временем храниться только часть - страница.

Ну и нафига повторять базу, если можно использовать исходную? Грамотно организованная модель, опирающаяся на исходную базу, даст всё то же самое, только без дополнительного кеширования. Это в теории.

А на практике остается открытым вопрос - автор, какому пользователю Вы хотите предоставить возможность читать более двух миллиардов строк? Покажите пользователя, который это сделает! Справка - при просмотре одной записи в секунду на это уйдет 68 лет непрерывного просмотра. 

2Гб строк не нужно никому и никогда. Мы у себя в продукте, при наличии постраничного выбора, тем не менее при превышении размера выборки 1000 строк вообще не выводим результаты и предлагаем сузить критерии поиска. Потому что прекрасно понимаем, что даже 1000 строк никто не будет просмотривать. А Вы хотите выдать 2Гб... Вы себе производительность такой выборки из базы представляете? Сколько нужно времени на это? Вас не линчуют за такие времена ожидания?


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
Ccoder
Дата 11.8.2011, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 15.2.2011

Репутация: нет
Всего: нет



Хочу сказать спасибо всем ответившим, особенно Skipy. (поставте ему заслуженный плюс за меня)


Цитата

Ccoder, Вы все еще хотите показывать всю таблицу, или же перейдете к обдумыванию постраничного просмотра?

Не я пока только интересуюсь. (сразу надо было-бы мне сказать)
Я думаю мне пока что хватит всё пересмотреть что вы написали. Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0895 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.