|
|
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
Mad_Head Как сказать не сталкивался... Я крутился вокруг подобных проблем 7 лет работая 1с-ником, причем базы бывали на столько огромные, что часто приходилось прибегать к работе с БД средствами SQL минуя ORM 1c. Приходилось заниматься оптимизацией, но более низкоуровневой чаще всего анализ начинался с просмотра плана запроса и лога блокировок, джависты, как правило, такие темы не обсуждают. По этой причине как решить задачу средствами jdbc я довольно хорошо представляю, структура БД из моего поста выше подошла бы, нужно только энтити на таблицы заменить. Опыта в JPA у меня меньше по этому я и общаюсь в данной теме, что бы выяснить для себя почему вы считаете, что JPA не пригодно для такой вполне просто задачи. И если вы знаете почему, то вполне смогли бы предоставить кейс. К примеру "не получится 1 запросом выбрать список товаров по набору характеристик/свойств" - просто лакончино и без юления. Я даже буду готов проверить ваше утверждение. вот ты сам себе и ответил, к этому добавить можно только то что для оптимизации необходимо использовать все возможности конкретной субд. авторМэд, только что глянул ваше решение. лол. вы просто в гуд по сути добавили лист пропертей. а лист может быть длиной... если не ошибаюсь. два в 32й степени. Вадя, тебе хватит пропертей? :) тут дело не в количестве, а в том как эти свойства назначить конкретному товару, как организовать фильтрацию, как организовать отображение, добавление и прочее, прочее. и учесть при этом быстродействие. к примеру , модно хранить набор свойств у товара в поле в виде такого набора 34,5,6,... где числа - id свойств. всё красиво, но только до тех пор пока не надо организовывать поиск по свойствам, сортировку, красивый вывод.... при малых объёмах это не заметно , но при настоящих объёмах данных - это уже тормоза. если ты сможешь построить серьёзный запрос - да можно его подсунуть хиберу, будет красиво... вроде. но что в итоге сделает хибер? он просто заполнит таблицу, которую необходимо вывети юзеру. произвести запись в "серьёзный" запрос он не сможет - потому как запрос "реад онли". а вывести результат из результсета можно и самому - всё просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2016, 23:42 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
Не знаю в тему ли... Меня заинтересовала оптимизация поиска товаров по набору булевых свойств. Нагуглил как это сделано в связке PHP+MySQL+Redis: https://habrahabr.ru/post/261137/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 00:23 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
andreykaTГоспода, собссно вопрос не праздный, а выходит из предыдущей темы. Я как программист на данный момент не дюже опытный, посему спрашиваю: в ваших джава-проектах какой средний размер баз и в среднем, сколько в них таблиц? т.е. у меня вот есть некое приложение которое завязано на торговлю и учет, причем реально работающее с живыми людьми. И там порядка 25-ти таблиц.. когда я эту цифру сказал одному челу он сказал типа фу а чо такой "маленький". и вот я в думках, а что же тогда не маленький? Всё зависит от постановки задачи (главный аспект) и стиля проектирования БД и приложения, с ним работающего. Например, если у кого-то EAV используется, это всего 10-20 таблиц и есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 00:46 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
вадявот ты сам себе и ответил, к этому добавить можно только то что для оптимизации необходимо использовать все возможности конкретной субд. Но я все же склонен считаь, что данную инфу получится выбрать 1 HQL запросом. Завтра набросаю пример и проверю наверняка. Если таблице которая хранит свойство/значение сделать составной индекс, то производительности будет достаточно для большенства проектов. Я думаю что куча CRM систем работат по похожему принципу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 02:05 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
mayton, там хорошо описали проблему свойств. но решение очень частное. я б не стал на него ориентироваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 05:37 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
вадятут дело не в количестве, а в том как эти свойства назначить конкретному товару, как организовать фильтрацию, как организовать отображение, добавление и прочее, прочее. и учесть при этом быстродействие. к примеру , модно хранить набор свойств у товара в поле в виде такого набора 34,5,6,... где числа - id свойств. всё красиво, но только до тех пор пока не надо организовывать поиск по свойствам, сортировку, красивый вывод.... при малых объёмах это не заметно , но при настоящих объёмах данных - это уже тормоза. если ты сможешь построить серьёзный запрос - да можно его подсунуть хиберу, будет красиво... вроде. но что в итоге сделает хибер? он просто заполнит таблицу, которую необходимо вывети юзеру. произвести запись в "серьёзный" запрос он не сможет - потому как запрос "реад онли". а вывести результат из результсета можно и самому - всё просто. вытаскиваем из табл свойств все свойства, подходящие под нужное нам описание, потом через свойства вытаскиваем все товары, к которым они привязаны. не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 07:09 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
andreykaT, это для каких целей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 08:11 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
вадяandreykaT, это для каких целей? ты озвучивал задачу найти товар, подходящий под какие-то свойства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 08:25 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
авторты озвучивал задачу найти товар, подходящий под какие-то свойства. я озвучил задачу создание системы для работы со свойствами товаров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 08:53 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
вадяmayton, там хорошо описали проблему свойств. но решение очень частное. я б не стал на него ориентироваться. Там просто не учтен поиск непрерывных величин типа цена, вес, габариты но их можно учесть на 2-й фазе поиска типа JOIN id-s товаров полученых из Редис с MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 09:03 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
maytonвадяmayton, там хорошо описали проблему свойств. но решение очень частное. я б не стал на него ориентироваться. Там просто не учтен поиск непрерывных величин типа цена, вес, габариты но их можно учесть на 2-й фазе поиска типа JOIN id-s товаров полученых из Редис с MySQL. начнёш это реализовать - получится велосипедостроение.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 09:37 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
вадяmaytonпропущено... Там просто не учтен поиск непрерывных величин типа цена, вес, габариты но их можно учесть на 2-й фазе поиска типа JOIN id-s товаров полученых из Редис с MySQL. начнёш это реализовать - получится велосипедостроение.... Возможно. Я не строил интернет-магазины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 10:52 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
вадяавторты озвучивал задачу найти товар, подходящий под какие-то свойства. я озвучил задачу создание системы для работы со свойствами товаров. в чем проблема? у тебя бесконечное число свойств определенного типа. текст пусть. ты можешь создать формально универсальный класс "свойство" и там мешок полей в нем сделать предопределенных. числовые и текстовые. пожалуйста, можешь называть каждое свойство по своему. не вижу проблемы. искать товар по свойству. - пжалста. хкл или классический критерий навроде: Код: java 1. 2. 3. впрочем, это суть джоин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 11:27 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
авторв чем проблема? я озвучил задачу: создание системы для работы со свойствами товаров. ты же вырываешь из системы кусочек и его решение выдаёшь за решение для всей системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 11:53 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
andreykaTв чем проблема? Проблема в производительности. Реляционки плохо ищут в EAV. И к ним сбоку подставляют альтернативные механизмы поиска. Текстовый поиск. Биткарты. Денормализуют. А то что ты нарисовал - это вообще не про это. И это не проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 11:57 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
mayton, у меня вот возникала задача поиска по 1e6 товаров (до 1e9 атрибутов), с поиском по совпадению, по диапазону и т.п, еще и с нормальными требованиями по производительности (10ms на запрос). Никакая СУБД, увы, не справляется и близко, нужно писать собственное решение (впрочем, писать его недолго). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 14:16 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
DPH3mayton, Никакая СУБД, увы, не справляется и близко, нужно писать собственное решение (впрочем, писать его недолго). Отлично. Добавляюсь в твой github ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 14:28 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
DPH3mayton, у меня вот возникала задача поиска по 1e6 товаров (до 1e9 атрибутов), с поиском по совпадению, по диапазону и т.п, еще и с нормальными требованиями по производительности (10ms на запрос). Никакая СУБД, увы, не справляется и близко, нужно писать собственное решение (впрочем, писать его недолго). интересно, но после опытов с mysql 5.7.11 с поиском по like среди 1е7 записей я не уверен что всё так трагично хотелочь бы посмотреть. есть возможность 1е6 товаров дать для тестов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 15:04 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
Если взять матрицу для Редиски размером 1е6 на 1е9 то мы получим логический размер 1е6 * 1е9 = 1е15 логических элементов типа true/false или в байтовом представлении это будет 1е15/8 = 125 000 000 000 000 байт = 113 Тб Вобщем 113 терабайт. Но я думаю что матрица эта по большей части будет разреженная. Или даже детальнее... существует класс продуктов для которых некоторые свойсвта не существуют. Например для холодильника не будет существовать такая опция как FullHD и у плазмы не будет опций трех-камерности e.t.c. Тоесть оптимистично... можно побить товары на категории для которых не нужно резервировать 1e9 атрибутов а достаточно будет 1 тысячи (даже с зацепом на будущие опции товаров и опции снятые с производтсва). Таким образом постановка 1е6 на 1е9 может быть изменена на другую. Код Редиса надо переколбасить под классы товаров с матрицами существенно меньшего размера. А для поиска на сайте - классификатор товаров все равно активируется поэтому задача естественным образом упрощается идя от пользовательского use-case. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 15:42 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
mayton, хм, в публичный доступ я этот код не выкладывал. Но, похоже, судя по интересу, надо будет довести до соответствующего состояния. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 23:01 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
вадя, товаров дать, разумеется, не могу. Но кто мешает сгенерить собственный набор, для тестирования хватит. Но там проблемы в основном не в поиске по одному атрибуту, а в поиске по паре десятков одновременно, с разными видами поиска и при этом с обновлением всех цен по какой-нибудь категории. Из готовых решений лучше всего справлялся SOLR, но у него не очень быстрый поиск по диапазону и обновления не очень быстрые ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 23:07 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
Mad_HeadЕсли можете подкрепите примером. Какую структуру можно создать вручную и нельзя сгенерировать по entity? Естественно, что бы это давала какие-то весомые плюсы. Из самого простого, что сложно делать через hiber: хранение сложных сущностей в полях типа json, с полиморфизмом, обратной совместимостью версий и прочими радостями, которые легко делать через PostgreSQL + Jackson, но почти нереально через ORM. Плюсы - резкий рост производительности ) Я как раз про это рассказывал на последнем РИТе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 23:12 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
Mad_HeadКак по мне - это фраза из разряда "программировать или верстать нужно в блокноте". Просто более высокоуровневые фреймворки нужно изучать и разбираться, что происходит от того или иного действия. А иначе получается преждевременная оптимизация, а это очень большое зло. У меня на прошлой работе были программисты старой школы которые на JDBC + собственное ручный DAO слой исполдьзовали везде. Так они эту часть писали в 3 раза дольше, чем другая команда использующая ORM и в узких местах написавшая native query. Ну, когда я смогу найти на рынке за разумные деньги разработчика, которые понимает, как работает @Transactional поверх Hibernate на конкретной СУБД (кстати, я пока еще таких вообще не видел, как только начинаешь задавать сложные вопросы - все начинают говорить "наверно все будет хорошо"), то да, наверно можно будет спокойно использовать ORM. А на данный момент ответственные или высокопроизводительные вещи проще писать без ORMа. Кстати, как только нужно работать с изменением структуры СУБД в кластере без останова - то ORM начинает изрядно тормозить разработку. Выигрыш в производительности разработки - только пока в продакшн не вышли, да и то если на jdbc писать совсем не раздумывая. Проверялось ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 23:21 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
DPH3, длина поля названия ? структура таблицы? прочие условия? чтоб было реальное сравнение скорости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 23:23 |
|
||
|
Размер базы сферического-java-приложения в вакууме.
|
|||
|---|---|---|---|
|
#18+
maytonА для поиска на сайте - классификатор товаров все равно активируется поэтому задача естественным образом упрощается идя от пользовательского use-case. Это пока не возникают запросы вида "что-нибудь красное для мальчика от 500 до 1000 рублей". И тут уже классификатор не работает. Собственно, как я ругаюсь каждый раз, когда ищу себе читалку на Яндекс.Маркете, где телефоны, планшеты и электронные книги - три разных категории, а мне-то нужно искать среди всех сразу. Когда можно сузить поиск до категории товаров, то проще завести по таблице или БД на каждую категорию и искать там. Собственно, когда-то в Маркете так и было (сейчас - не в курсе). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2016, 23:25 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39255159&tid=2123980]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 344ms |

| 0 / 0 |
