Anonymous
внезапно
Vasily
Из плюсов - очень быстрое чтение и поиск
Vasily
Особенно сложный
Anonymous
поправка: чтение, где нужны джоиины
Anonymous
остальное чтение такое же ровно
Vasily
Из минусов - долгая запись
Vasily
С другой стороны, атомарные обновления вообще изи делаются
Anonymous
блин, вся фишка графа как модели данных в хранении прямой ссылки на всех тех, о ком она знает, а не модель PK/FK. отсюда весь ее перфмонас. neo4j, насколько я помню, отчаянно пытались нащупать оптимальный способ хранить все это на диске, но как далеко они в этом продвинулись я уже давно не слежу, не суть.
Vasily
почему?
Потому что обновляешь обычно одну тройку
Vladislav
Anonymous
Потому что обновляешь обычно одну тройку
в той же neo4j лэйблы, ноды, ребра лежат в разных файлах, которые к тому же как-то шардируются для масштабирования (точно не уверен). уже на этом уровне типичный запрос на запись потребует координации разных операций на запись и "атомарность" не выглядит прям настолько просто. или ты не о том, о чем я?
Vasily
Ну у меня был rdf формат в виде subject predicate object. База хранилась в сильно модифицированном sqlite
Anonymous
а, так ты от PK/FK никуда не ушел
Vasily
Т.е. шардирования не было, но миллионы объектов держала
Anonymous
это "типа" база на графах. но нет, это не она. нативная графовая модель дала бы еще лучший перфоманс.
Vasily
Для erp систем важен не перформанс,а возможность настройки под себя. И эта задача прямо ок выполнялась
Anonymous
Для erp систем важен не перформанс,а возможность настройки под себя. И эта задача прямо ок выполнялась
ну да-да, я не спорю, просто товарищ выше утверждает, что не смог извлечь из графовых БД перфоманс на чтение сложных (мНоГа дЖоИнОв) запросов. на что я ему и возразил.
Anatoly
У меня была сеть людей и серии проектов и люди в них участвовали
Anatoly
И надо выбирать всех людей в условном проекте и его детях или его родителях
Vasily
Тут по перформансу запаса должно хватить
Anatoly
Чисто графы, кмк. И я написал сам быстрее, чем нео4j на порядки
Vasily
Ну в нео4ж скорее всего внутри странные алгоритмы
Anatoly
Да, мой код не общего пользования, в отличие от нео4ж
Диёр
И надо выбирать всех людей в условном проекте и его детях или его родителях
в вк можно рекламу настроить по параметрам члена семьи
Vasily
Те люди, которые писали алгоритмы в другой базе, потом ушли пилить крипту на расте
Anatoly
Но всё равно странно
Vasily
⛔️ Планируется полное закрытие российских границ По данным источников “Ъ”, российские власти допускают полное закрытие границ. Официально об этом могут сообщить уже 18 марта. При этом дата вступления решения в силу не уточняется. Ограничения не коснутся граждан РФ, а также тех, у кого есть вид на жительство в стране.
Ayrat
Джависты такие джависты. if (request.getOfferId() == null || isEmpty(request.getOfferId())) { throw new PromoException(VALIDATE_ITEM_IDENTIFIER_FAILED); } isEmpty это библиотечная функция: public static boolean isEmpty(String str) { return str == null || str.length() == 0; }
Andrew
Кек
Ayrat
Иду по воркфлоу, разбираю легаси через люсидчарт. Нашёл на одном пути 5 проверок на null одного и того же с 3мя разными респонсами
Ayrat
Ясен хуй что после первой остальные уже нахуй не нужны
Ayrat
но для перестраховки пишут не стесняясь
Denis
но для перестраховки пишут не стесняясь
ну слушай как говорится береженого...
Ayrat
ну слушай как говорится береженого...
Ну да, я только начал, уверен ещё раз 5 ту же проверку увижу
Denis
знаешь после js я уже ничему не удивляюсь
Denis
лучше пусть добавят такую проверку
Ivan
в каждом методе по своей проверке - параметрический инвариант машт персист
Ayrat
Ну вот в одном месте кидают 400 “empty response”, а в другом - 400 “400.ITEMPRICING.PROMOMASTER.001”
Ayrat
При этом отработает только первая. Всегда
Ayrat
вы там нотнал не юзаете?
Эти нет. Я щас разберу логику на запчасти и сожгу джаву
Ayrat
явротебал
Диёр
у вас джава без ломбока?
Ayrat
Ага
Dr. Friedrich
у вас джава без ломбока?
Ломбок — это некромант содомия
Диёр
Для тех кто с джавы уходить не хочет вполне вариант кмк
Dr. Friedrich
Для тех, кто с джавы уходить не хочет, вариант один
Диёр
ломбок
Dr. Friedrich
Диёр
да ну, джава не такая уж и плохая
Ivan
ломбок
что это такое?
Диёр
скорее на ней просто идиоты пишут
Dr. Friedrich
да ну, джава не такая уж и плохая
Джава очень плохая и вербозная.
Ayrat
О, нашёл. getOfferId() возврашает андерлаинг поле, которое аннотировано NotNull
Ayrat
при этом сам геттер не аннотирован
Dr. Friedrich
Начиная с 10 на ней худо-бедно можно писать
Dr. Friedrich
Но именно худо и бедно
Диёр
что это такое?
плагин для компилятора
Ayrat
Ойвсё
Диёр
Джава очень плохая и вербозная.
ну вот ломбок с этим пытается помочь
Dr. Friedrich
при этом сам геттер не аннотирован
«джава не такая уж и плохая»
Dr. Friedrich
А потом вот это
Dr. Friedrich
ну вот ломбок с этим пытается помочь
Не вижу, как он помогает мне с checked exceptions
Ayrat
я смотрю на метод из пары тысяч строк в котором контрол флоу построен на исключениях
Диёр
checked exceptions не трогали для обратной совместимости же
Ayrat
И мне плохо
Диёр
ну, наверное
Dr. Friedrich
Просто бляха через две три строчки catch (Throwable t) throw new RuntimeException(t);
Dr. Friedrich
От пальцев отскакивает уже
Dr. Friedrich
А потом ловишь и анврапаешь, анврапаешь и ловишь
Dr. Friedrich
Это рак.
Dr. Friedrich
https://github.com/microsoft/azure-devops-intellij я вот тут в одном проекте пишу на жавке и Котлине
Диёр
кхм, ну тут проблема языка что он даёт возможность анчекед помечать, но не проблема языка что эту вещь юзают
Dr. Friedrich
И блин, ну чуваки, несерьёзно
Dr. Friedrich
Не годится эта жава ни для чего