| 
 | 
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Собственно столкнулся с проблемой такого плана есть сущность в которой одно из полей сделано уникальным есть метод который берет эти сущности и пишет в базу и все бы хорошо,когда все это в однопоточном режиме- просто делаешь запрос в базу - смотришь есть ли там такое значение если есть то скипаешь и все,либо же кладешь все в какой то сет и проверяешь была ли уже такая запись или нет Но вот когда ты сталкиваешься с многопоточкой - то получается полная печаль сделал коллекцию Код: java 1. но все равно получается не то ,что хочется сам метод выглядит так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. и получаю NullPointer в строчке if (mailList.contains(email.getEmail())) continue; ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:24 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  [quot asv79#22314517] Код: java 1. 2. 3. я так понимаю что проблема вот тут - в коллекци этот емайл уже есть,но записаться в бд не успело? и получается объекту присваивается null при дебаге в переменных email == null но если сделать evaluate expression этой строчки eMailingMailRepository.findByEmail((String) ((List) mail).get(0)) будет найдено значение может туда thread.sleep на 10-20 милисекунд или не в этом дело? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:34 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Очень много кастов, сложно понимать что тут происходит.. Еще и закомментирована строка. Было бы здорово показывать тут чистый код, без лишнего. Если бросается NPE, то либо email null, либо mailList. Видимо здесь null возвращается: Код: java 1. Т.е. в concurrentSkipListSet элемент есть, а в базе уже нет. Добавь еще проверку на null. А в целом - оправдано ли то, что ты дублируешь БД состояние в памяти? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:36 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Эх Стас, закидать бы тебя какашками, как ты сам любишь ;) -  6 использований ((List) mail).get(0)) в одном единственном кусочке кода. Про Introduce variable слыхал ;) ? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:40 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, >есть сущность в которой одно из полей сделано уникальным = по русски это айди ID? Констрейнт? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:42 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Stanislav Bashkyrtsev Очень много кастов, сложно понимать что тут происходит.. Еще и закомментирована строка. Было бы здорово показывать тут чистый код, без лишнего. Если бросается NPE, то либо email null, либо mailList. Видимо здесь null возвращается: Код: java 1. Т.е. в concurrentSkipListSet элемент есть, а в базе уже нет. Добавь еще проверку на null. А в целом - оправдано ли то, что ты дублируешь БД состояние в памяти? тут ситуация иная в коллекции элемент уже есть,а в бд в тот момент времени его еще нет получается в случае если в бд у нас лежит такой емайл я прохожу по условию - делаю выборку из бд и ничего там не вижу по дублированию бд - это эксперемент ,так как без коллекции я получал validateConstraintExeption когда я делал проверку на наличие в базе такого емайл - в тот момент времени его еще не было и в момент записи он уже там есть короче хз что делать- может количество потоков уменьшить- сейчас их 8 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:43 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp asv79, >есть сущность в которой одно из полей сделано уникальным = по русски это айди ID? Констрейнт? если бы ID ,это наименование почтового ящика- unique constraint ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:44 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  chpasha Эх Стас, закидать бы тебя какашками, как ты сам любишь ;) -  6 использований ((List) mail).get(0)) в одном единственном кусочке кода. Про Introduce variable слыхал ;) ? зато работает быстро - если ввести переменную -замедляется процесс ,так как все это в цикле ,в котром будет куча мусора из под этих временных объектов - я проверял с переменными и без - на 15 к записей я почти 3 минуты проигрываю . Это касается лишь списков ,видимо в силу того что при присвоении значения списку идет дорогое копирование- которое замедляет процесс ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:48 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Как бы ты не пытался обойти проблему со списками - все равно будет вероятность что два INSERT'а пойдут одновременно. Как правило все делают SELECT, а потом INSERT. Но между этими двумя запросами может еще многое произойти. И всегда есть вероятность ошибки. Обычно все забивают. В нативном SQL некоторые СУБД поддерживают insert ignore. Вставит только если такой записи нет. Но с ORM'ом прийдется все-таки ожидать иногда ConstraintViolationException. Правда после этого еще желательно Session/EntityManager закрыть или хотя бы очистить.. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:51 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  убрал касты для наглядности Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:51 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Stanislav Bashkyrtsev Как бы ты не пытался обойти проблему со списками - все равно будет вероятность что два INSERT'а пойдут одновременно. Как правило все делают SELECT, а потом INSERT. Но между этими двумя запросами может еще многое произойти. И всегда есть вероятность ошибки. Обычно все забивают. В нативном SQL некоторые СУБД поддерживают insert ignore. Вставит только если такой записи нет. Но с ORM'ом прийдется все-таки ожидать иногда ConstraintViolationException. так и что делать - выпиливать эту коллекйию и делать запрос в бд на предмент наличия такой записи- если какой то поток обогнал и записал в это время это значение- второй поток получит эксепшн - и не сможет дальше с этим емайл рабоать- вот этого бы очень не хотелось - хотелость бы отловить ConstraintViolationException но при этом все равно выудить этот емайл и продолжить с ним работу ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:57 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Stanislav Bashkyrtsev Как бы ты не пытался обойти проблему со списками - все равно будет вероятность что два INSERT'а пойдут одновременно. Как правило все делают SELECT, а потом INSERT. Но между этими двумя запросами может еще многое произойти. И всегда есть вероятность ошибки. Обычно все забивают. В нативном SQL некоторые СУБД поддерживают insert ignore. Вставит только если такой записи нет. Но с ORM'ом прийдется все-таки ожидать иногда ConstraintViolationException. Правда после этого еще желательно Session/EntityManager закрыть или хотя бы очистить.. Я вообще не очень понимаю, чем могут помочь какие-то списки/мапы и прочее.... Если программа многопотоковая ))), то рано или поздно ее могут захотеть запустить на другом компьютере/ноде и так далее. И все списки/мапы и прочее - пойдут лесом и велосипед полностью оквадроколесится Насчет SELECT так же не понял. SELECT FOR UPDATE - для отсутвующей записи сделать вроде не получится, а делать просто SELECT для проверки и на что-то расчитывать - то как-то ну больно наивно. IMHO единственный нормальный РСУБД вариант INSERT + проверка exception'а. p.s. Проблему автора не понял. Ну собрал велосипед с квадратными колесами - какой смысл спрашивать, что ездить не удобно? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 15:58 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 Stanislav Bashkyrtsev Как бы ты не пытался обойти проблему со списками - все равно будет вероятность что два INSERT'а пойдут одновременно. Как правило все делают SELECT, а потом INSERT. Но между этими двумя запросами может еще многое произойти. И всегда есть вероятность ошибки. Обычно все забивают. В нативном SQL некоторые СУБД поддерживают insert ignore. Вставит только если такой записи нет. Но с ORM'ом прийдется все-таки ожидать иногда ConstraintViolationException. так и что делать - выпиливать эту коллекйию и делать запрос в бд на предмент наличия такой записи- если какой то поток обогнал и записал в это время это значение- второй поток получит эксепшн - и не сможет дальше с этим емайл рабоать- вот этого бы очень не хотелось - хотелость бы отловить ConstraintViolationException но при этом все равно выудить этот емайл и продолжить с ним работу Еще вопрос - я верно понимаю что это какой-то ETL процесс? Нельзя ли сделать разделение задач по потокам такое, чтоб одни и те же пользователи не создавались в разных потоках? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:01 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Stanislav Bashkyrtsev Отлавливай исключение, а затем по этому email'у делай снова SELECT в БД. Т.е. теперь-то он точно уже там есть. Еще вопрос - я верно понимаю что это какой-то ETL процесс? Нельзя ли сделать разделение задач по потокам такое, чтоб одни и те же пользователи не создавались в разных потоках? Спасиб за совет ,сейча попробую ,но это видимо затормозит процесс процентов на 30,что печально очень. По разделению никак- это миграция списка рассылок- тоесть у одного клиента вася@mai.ru и у другого может быть такой же ящик в списке ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:09 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 ...это миграция списка рассылок- тоесть у одного клиента вася@mai.ru и у другого может быть такой же ящик в списке Если из реляционной субд в реляционную - то вообще не понятно, нафига нужна Java и многопоток. Смигрировать сначала справочники, потом смигрировать основную таблицу IMHO сначало изобретение проблем, потом доблестное их решение ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:24 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev Я вообще не очень понимаю, чем могут помочь какие-то списки/мапы и прочее.... Если программа многопотоковая ))), то рано или поздно ее могут захотеть запустить на другом компьютере/ноде и так далее. И все списки/мапы и прочее - пойдут лесом и велосипед полностью оквадроколесится p.s. Проблему автора не понял. Ну собрал велосипед с квадратными колесами - какой смысл спрашивать, что ездить не удобно? это программа которая будет запущена все один раз,ее суть перенести данные с монго в постгрес ,после миграции монго вырубается надеюсь навсегда ) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:25 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, Какая миграция если данные не валидные. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:32 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev asv79 ...это миграция списка рассылок- тоесть у одного клиента вася@mai.ru и у другого может быть такой же ящик в списке Если из реляционной субд в реляционную - то вообще не понятно, нафига нужна Java и многопоток. Смигрировать сначала справочники, потом смигрировать основную таблицу IMHO сначало изобретение проблем, потом доблестное их решение ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:33 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 есть сущность в которой одно из полей сделано уникальным есть метод который берет эти сущности и пишет в базу и все бы хорошо,когда все это в однопоточном режиме- просто делаешь запрос в базу - смотришь есть ли там такое значение если есть то скипаешь и все,либо же кладешь все в какой то сет и проверяешь была ли уже такая запись или нет Проблема начинается в самом начале, в непонятной постановке Если в сущности более одного поля и уникальное поле не является PK в исходной системе - то в общем случае, никто не может гарантировать, что одному и тому же e-mail'у будут соответствовать одни и те же данные в других полях Можно, конечно, разрабатывать программы по методу "первое попавшееся", но потом готовьтесь к ошибка "первое попавшееся не попало" ( C ) Если в исходной системе это PK - то проблемы нет. Сначала мигрируем справочник, потом таблицы ссылающиеся на данный справочник Если в исходной системе это не PK - то должны быть критерии, как должно быть выполнено объединение в случае противоречивых данных В крайнем случае, на момент переноса можно данные положить в "плоскую" таблицу , а потом уже из нее с помощью команды SELECT DISTINCT нарезать справочники и смотреть коллизии. IMHO & AFAIK ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:34 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Выключить констрейнты и ключи. Всосать данные. Потом провалидировать. Так решают без ОРМ и... потоков))) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:34 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp asv79, Какая миграция если данные не валидные. а кого это волнует - там вместо интежера может лежать мапа,а вместо мапы например стринг) бизнесу же не обьяснить что монго - сама по себе помойка,так туда кидали все лет 5 наверно,сервис менялся ,а патчи никто не писал. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:36 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp Выключить констрейнты и ключи. Всосать данные. Потом провалидировать. Так решают без ОРМ и... потоков))) да это все понятно - кто бы разрешил еше) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:37 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, Ну потоки же ты придумал. Если очень нужны то сделай два. Один с начала, другой с конца. Проблемы? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:40 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 PetroNotC Sharp Выключить констрейнты и ключи. Всосать данные. Потом провалидировать. Так решают без ОРМ и... потоков))) да это все понятно - кто бы разрешил еше) ОК. Все равно, постановка хромает. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:42 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp asv79, Ну потоки же ты придумал. Если очень нужны то сделай два. Один с начала, другой с конца. Проблемы? а что это даст? дубляж может быть и в начале и в конце и в середине для понимания это большая монго колеккия где то 4 млн записей ,каждая запись содержит от 1 до 30 к ящиков- ящики должны быть уникальны в постгрес ,но в монго нет . получается что 8 потоков к примеру начинают бррать эти записи и писать их в бд,и тут хоть с начала хоть с конца ,хоть снизу или сверху - потоки будут писать дубляж- так как сам понимаешь такого количества уникальных ящиков нет в нашей стране,а записи есть) там процентов 40% наверно дубликаты ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:48 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, Почему просто не сделать условный Код: plsql 1. 2. 3. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 16:52 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Lelouch, Он не умеет без классов ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 17:00 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, >там процентов 40% наверно дубликаты И..... что с ними делает комп и причем потоки? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 17:01 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp asv79, >там процентов 40% наверно дубликаты И..... что с ними делает комп и причем потоки? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 17:16 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Если хочется просто закешировать пользователей, то можно обычную  ConcurrentHashMap<Email, User>  завести. И проверять там прежде чем делать insert или select. Вставлять в эту мапку всякий раз когда прошел удачный INSERT или не-null SELECT. Что-то такое: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 17:24 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 PetroNotC Sharp asv79, >там процентов 40% наверно дубликаты И..... что с ними делает комп и причем потоки? if (обработали) continue; ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 17:36 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 PetroNotC Sharp asv79, >там процентов 40% наверно дубликаты И..... что с ними делает комп и причем потоки? 1. Дай DDL "присваивать рассылке")))) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 17:38 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, Есть дубляж строки. Есть дубляж бизнес сущности. Есть дубляж "рассылки". Модель короче давай. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 17:40 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp asv79 пропущено... просто не записывать дубляж а брать сущесвующие значние и присваивать его рассылке) if (обработали) continue; так я те про что и пишу что создал) но не успевает база за списком этим - ты почитай первый вопрос как звучал ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 17:59 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp asv79 пропущено... просто не записывать дубляж а брать сущесвующие значние и присваивать его рассылке) 1. Дай DDL "присваивать рассылке")))) не могу я сюда никакие ддл выкладывать сам понимаешь почему ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:00 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Stanislav Bashkyrtsev Если хочется просто закешировать пользователей, то можно обычную  ConcurrentHashMap<Email, User>  завести. И проверять там прежде чем делать insert или select. Вставлять в эту мапку всякий раз когда прошел удачный INSERT или не-null SELECT. Что-то такое: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. хеш мапа не нужна так как емайлы не принадлежат юзерам никаким- я сделал сет - как ты видел в первом сообщении- но проблема видимо в том ,что он быстрей работает чем бд и получается конфликт ну и ты сам выше сказал зачем дублировать состояние бд- я тоже думаю нет смысла в этом списке - надо в бд ходить ,ибо в спике уже запись имеется а в бд еще нет. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:02 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Накал бреда возрастает ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:04 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 PetroNotC Sharp пропущено... 1. Дай DDL "присваивать рассылке")))) не могу я сюда никакие ддл выкладывать сам понимаешь почему Табла user и табла Рассылка из трех полей секретна? Жжешь!)))) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:05 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev Накал бреда возрастает ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:06 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Четвертая тема автора про бд..... Которая секретна ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:07 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp asv79 пропущено... не могу я сюда никакие ддл выкладывать сам понимаешь почему Табла user и табла Рассылка из трех полей секретна? Жжешь!)))) хех петро ты удивишься как сложна и многогранна жизнь .Может через пару лет я расскажу что тут недавно произошло.. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:09 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev Накал бреда возрастает от вас да- то используй кешированый список ,то зачем дублировать состояние бд)) ладно закройте тему,тут толк есть только от Станислава реальный ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:10 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, Слив 4ой темы ТС. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:17 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 Stanislav Bashkyrtsev Если хочется просто закешировать пользователей, то можно обычную  ConcurrentHashMap<Email, User>  завести. И проверять там прежде чем делать insert или select. Вставлять в эту мапку всякий раз когда прошел удачный INSERT или не-null SELECT. Что-то такое: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. хеш мапа не нужна так как емайлы не принадлежат юзерам никаким- я сделал сет - как ты видел в первом сообщении- но проблема видимо в том ,что он быстрей работает чем бд и получается конфликт ну и ты сам выше сказал зачем дублировать состояние бд- я тоже думаю нет смысла в этом списке - надо в бд ходить ,ибо в спике уже запись имеется а в бд еще нет. Код: java 1. С Set'ом прийдется все равно много значений хранить. Если это недопустимо, то можно Bloom Filter использовать, но не знаю есть ли многопоточные реализации. Ибо если лочить весь фильтр, то все потоки в него и будут утыкаться постоянно. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:22 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79проблема видимо в том ,что он быстрей работает чем бд и получается конфликт 1. Жесть и бред asv79сталкиваешься с многопоточкой 2. И при чем тут БД ? Блок Код: java 1. 2. 3. Скорее всего должен быть обернут в synchronized. А если мы хотим еще данный список еще и с БД поддерживать в корректном состоянии, то и insert и commit так же должен быть в этом же блоке synchronized. IMHO ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:24 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  IMHO Миграция - сложное явление. ETL - тут как бы попроще. В самом слове уже содержится 3 (ТРИ!) разных действия: Extract Transformation Load (insert) Если задача сложна, то никто не мешает задачу разбить на данные простые действия. 1. Вычитали данные из помойки, залили их в том виде, как они есть в нормальную СУБД 2. Дальше банальными SELECT'ами проанилизировали и преобразовали в нужный вид Ну или если Java наше все и SELECT'ами не умеем и данных не много (помещаются в память). 1. Вычитали все данные в память/коллекции Java 2. for'ами, for'ами.... прошлись по коллекциям и подготовили новые "корректные" справочники в виде тех же коллекций 3. Пакетной вставкой все вставили в новую базу IMHO ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 18:31 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Код: sql 1. 2. 3. ? Или это слишком банально и содержит мало объектных типов? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 19:40 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Basil A. Sidorov ...Или это слишком банально и содержит мало объектных типов? IMHO скорее всего не поможет. Ему еще ID'шник из базы получить нужно. А тут даже try { INSERT ... } exception WHEN_NO_DATA_FOUND { SELECT ... } может не помочь, при обычном Read committed ))) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 19:47 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Код: sql 1. вернёт заданные поля вставленной записи. Если, конечно, есть поддержка в драйвере. Если нет, то на первом проходе делаем вставку, а на втором - выбираем искомые идентификаторы для всех исходных значений. Коряво, но вполне работоспособно. P.S. Многопоточная вставка это то, что не надо делать с базой. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 19:55 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev, ID шник пусть сам ставит. Простой счетчик. Впрочем он DDL засекретил)) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 19:56 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Basil A. Sidorov вернёт заданные поля вставленной записи. Если, конечно, есть поддержка в драйвере. Если нет, то на первом проходе делаем вставку, а на втором - выбираем искомые идентификаторы для всех исходных значений. Коряво, но вполне работоспособно. asv79Но вот когда ты сталкиваешься с многопоточкой Одна сессия вставили и НЕ закомитела Вторая сессия пытается вставить - получает exceptin Пытается получить ID-ник SELECT'ом - а облом ))) Первая сессия коммитет, но второй это уже не поможет p.s. в сообщении 22314707 no_data_found конечно опечатка, скорее всего, что-то типа DUP_VAL_ON_INDEX будет ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 20:03 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev Одна сессия вставили и НЕ закомитела Вторая сессия пытается вставить - получает exceptin Пытается получить ID-ник SELECT'ом - а облом ))) Первая сессия коммитет, но второй это уже не поможет На самом деле так: 1. tx1 началась, вставила запись 2. tx2 началась, при вставке заблокировалась на изменении индекса. Ну а дальше два возможных варианта: 3.a tx1 делает коммит, что разблокирует tx2 и та валится с исключением 3.b tx1 делает rollback, что разблокирует tx2 и та удачно вставляет ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 22:28 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, я тут только счас понял что SELECT делается потому что у Email'ов есть ID. Так вот.. Раз email'ы уникальные, почему бы вообще не избавиться от суррогатного Primary Key и не использовать email в качестве PK? Тогда SELECT вообще не нужен будет. А в Foreign Key можно прям email и писать.  Хотя наверно ты мигрируешь в уже готовую схему, менять ее уже не выйдет.. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2021, 22:40 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Без классов прям совсем никак (или mybatics?)? Хотя предложенный ранее insert/on conflict retur... выглядит более логичным. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 00:11 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Stanislav Bashkyrtsev Leonid Kudryavtsev Одна сессия вставили и НЕ закомитела Вторая сессия пытается вставить - получает exceptin Пытается получить ID-ник SELECT'ом - а облом ))) Первая сессия коммитет, но второй это уже не поможет Получит. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 01:56 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 зато работает быстро - если ввести переменную -замедляется процесс ,так как все это в цикле ,в котром будет куча мусора из под этих временных объектов Херово жить без профильного образования. Когда ты делаешь 6 раз гет у тебя ничего не выполняется в этот момент? Гет берется из астрала за 0,5 такта цп? А что я говорил в прошлом треде? Вот, ты опять танцуешь вокруг своей орм с костылями и подпорками, а мы смотрим и смеёмся. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 04:03 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  crutchmaster asv79 зато работает быстро - если ввести переменную -замедляется процесс ,так как все это в цикле ,в котром будет куча мусора из под этих временных объектов Херово жить без профильного образования. Когда ты делаешь 6 раз гет у тебя ничего не выполняется в этот момент? Гет берется из астрала за 0,5 такта цп? А что я говорил в прошлом треде? Вот, ты опять танцуешь вокруг своей орм с костылями и подпорками, а мы смотрим и смеёмся. смотри я ж не просто так сделал все эти длинные касты- я протестировал с ними и без них - создание нового объекта очень сильно нагружает процесс - и да - пусть код не очень хорошо читаем,но он быстрее где то на 20% орм то тут причем? или мне может пойти к руководству и сказать - давайте братцы - выделите бюджет млн 10 -15 на переписку сервисва на ждбси?))) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 09:05 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Stanislav Bashkyrtsev asv79, я тут только счас понял что SELECT делается потому что у Email'ов есть ID. Так вот.. Раз email'ы уникальные, почему бы вообще не избавиться от суррогатного Primary Key и не использовать email в качестве PK? Тогда SELECT вообще не нужен будет. А в Foreign Key можно прям email и писать.  Хотя наверно ты мигрируешь в уже готовую схему, менять ее уже не выйдет.. да у емайл есть id поэтму до кучи мне пришлось переделать их с identity на sequence иначе селекты вообще не проходили - так как присовоение id идет при записи пс.да миграция идет в готовую схему - которую никто не даст менять поэтому приходится работать с невалидными данными со стороны монго и с другой постгрес - которая не отвечает даже 1 нф ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 09:10 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev Basil A. Sidorov ...Или это слишком банально и содержит мало объектных типов? IMHO скорее всего не поможет. Ему еще ID'шник из базы получить нужно. А тут даже try { INSERT ... } exception WHEN_NO_DATA_FOUND { SELECT ... } может не помочь, при обычном Read committed ))) такая схема работает инсерт в try ->exeption ->catch ->select правда скорость оставляет желать лучшего ,но по крайне мере я добился чего и хотел ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 09:13 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev Скорее всего должен быть обернут в synchronized. А если мы хотим еще данный список еще и с БД поддерживать в корректном состоянии, то и insert и commit так же должен быть в этом же блоке synchronized. IMHO посмотри сюда на первое сообщение Код: java 1. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 09:15 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev Stanislav Bashkyrtsev пропущено... Вторая транзакция не получит exception пока первая не закоммитит, иначе это бы нарушало изоляцию READ COMMITTED. Мол, вставить запись не могу, хоть даже записей с таким значением нет в таблице. Получит. asv79орм то тут причем? или мне может пойти к руководству и сказать - давайте братцы - выделите бюджет млн 10 -15 на переписку сервисва на ждбси?)))В целом-то сервис не обязательно трогать, только миграцию писать на JDBC. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 09:20 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  [quot Stanislav Bashkyrtsev#22314670 Я правда не понял зачем ты вообще SELECT делаешь, если у тебя и так email есть.. Получается какой-то бесполезный   Код: java 1. /quot] все очень просто - там три сущности - первая это ящик- далее рассылка и третья M2M тоесть я пишу рассылку далее в цикле прогоняю ящики и м2м для чего нужен такой селект - чтобы у меня на руках был id емайл которй я могу записать в м2м вообщем трай кетч работает - большего и не требуется ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 09:20 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, >там три сущности - первая это ящик- далее рассылка и третья M2M =незачет. След топик начинай с DDL))))) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 09:40 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, Новые сущности, в эксклюзивном режиме, можно писать без генерации айди в бд. Джун ты наш. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 09:42 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 орм то тут причем? Притом, что ты пляшешь вокруг него с подпорками и приседаешь. asv79 создание нового объекта Ссылки ты хотел сказать? Нагружает процесс, да? asv79 или мне может пойти к руководству и сказать Да не надо тебе ничего менять, всё нормально. Ты же сам его выбрал и рассказываешь, какой он крутой. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 10:23 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp asv79, Новые сущности, в эксклюзивном режиме, можно писать без генерации айди в бд. Джун ты наш. вот это новость ) а кто то утверждал что нельзя? а вот если сущнность содержит ссылку на другую сущность - то вроде как уже нужен id) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 10:35 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Basil A. Sidorov Многопоточная вставка это то, что не надо делать с базой. в одном потоке слишком долго,хотя SLA на процессы нет - то может и придется писать в однопоточке ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 10:39 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 PetroNotC Sharp asv79, Новые сущности, в эксклюзивном режиме, можно писать без генерации айди в бд. Джун ты наш. вот это новость ) а кто то утверждал что нельзя? а вот если сущнность содержит ссылку на другую сущность - то вроде как уже нужен id) Вставляем мастер с айди 123 и потом в детайль с этим же 123. Ничего запрашивать не надо. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 10:42 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 Basil A. Sidorov Многопоточная вставка это то, что не надо делать с базой. в одном потоке слишком долго,хотя SLA на процессы нет - то может и придется писать в однопоточке Ты с работающей однопоточки начать должен был. Потом тюнинг. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 10:44 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp asv79 пропущено... вот это новость ) а кто то утверждал что нельзя? а вот если сущнность содержит ссылку на другую сущность - то вроде как уже нужен id) Вставляем мастер с айди 123 и потом в детайль с этим же 123. Ничего запрашивать не надо. ааа вот оно чо ,а айди то ты где возьмешь) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 11:05 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, Выше писал. Счетчик на клиенте. Хоть до миллиарда. Потом вкл индекс PK ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 11:09 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, Есть куча решений. Но: - ты не дал DDL - ты слился - ты не сделал однопоточку и не дал цифры ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 11:10 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev asv79Но вот когда ты сталкиваешься с многопоточкой И даже если не касаться азов устройства СУБД, то задлянафига в сугубо последовательном процессе многопоточка? Чтобы оно сразу было и сразу глючило? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 12:39 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 в одном потоке слишком долго ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 12:43 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Для больших объемов в PostgreSQL есть команда COPY, на порядки быстрее INSERT'ов. AFAIK ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 13:17 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev Для больших объемов в PostgreSQL есть команда COPY, на порядки быстрее INSERT'ов. AFAIK Он просто не врубается, что в бд можно залить вообще без PK так как его нет в источнике данных! ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 13:46 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp Leonid Kudryavtsev Для больших объемов в PostgreSQL есть команда COPY, на порядки быстрее INSERT'ов. AFAIK Он просто не врубается, что в бд можно залить вообще без PK так как его нет в источнике данных! естественно можно ,кто с этим спорит там дальше идет табла которая многие ко многим- нука умник скажи как ее заполнить не имея id тех представлений - которые в нее пишутся) петро ты как обычно наводишь суету с нулевым кпд - просто засоряя топики вокруг себя - почему тебя еще не удалили с форума - загадка,все меньше и меньше хочется сюда заходить из за тебя ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 14:41 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, Нафиг мне тебя обучать. Будет DDL тогда посмотрим на твое поведение. А так, тебе с джунов не вылезти н и к о г д а) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 14:49 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp asv79, Нафиг мне тебя обучать. Будет DDL тогда посмотрим на твое поведение. А так, тебе с джунов не вылезти н и к о г д а) чему обучать - ты не знаешь вообще ничего - везде во всех темах тебя посылают на три буквы))) учитель нашелся ) уж кто из нас джун - так это ты ) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 14:51 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, А чего тогда слился уже 4ую тему про бд? Тяжело задачу обрисовать? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 14:54 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79, Третья твоя тема 22310872 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 14:57 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  ТС, Если не будешь _давать_ когда попросят код\логи/стек\DDL, то останешься вечной нецелованной девочкой до старости" (с) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 15:07 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Stanislav Bashkyrtsev ... Может проверишь? Я вот проверил. Да, был не прав. INSERT при вставке в уникальный индекс блокирует запись. Блокировка будет висеть до тех пор, пока первый вставивший не сделает commit и только тогда придет exception. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 15:18 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Вообщем сделал через паралельные стримы задачу) пошел путем декомпозиции сначала разбил монго на группы - группы на юзеров и далее уже миграция по каждому юзеру отдельно это позволило мне вместо MongoCursor затягивать в память кусками данные из монго в виде списка и не уйти в ООМ далее на откуп паралельному стриму нигде нет конфликтов по записи- причем что я убрал все блоки трай кетч работает достаточно быстро ,даже быстрей чем я ожидал так что пока петро тут зубоскалил я таску закрыл) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 15:56 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp ТС, Если не будешь _давать_ когда попросят код\логи/стек\DDL, то останешься вечной нецелованной девочкой до старости" (с) я ж те сказал уже по этому поводу - нельзя ,я под подпиской - не имею права ничего никуда выкладывать,поэтому извините ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 15:57 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 PetroNotC Sharp ТС, Если не будешь _давать_ когда попросят код\логи/стек\DDL, то останешься вечной нецелованной девочкой до старости" (с) я ж те сказал уже по этому поводу - нельзя ,я под подпиской - не имею права ничего никуда выкладывать,поэтому извините 1) ну тут от тебя не всю структуру БД просят, а 2-3 связанные таблицы 2) Можно переименовать поля и таблицы + убрать поля, которые не затрагиваются в рамках того, что ты делаешь ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 19:13 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Lelouch, Разумеется. Я ему выше предложил два потока навстречу. Понятно, если есть сущности, то можно навстречу по сущностям идти. Или параллельно. Как был он джуном, так и останется. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 19:21 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  asv79 я ж те сказал уже по этому поводу - нельзя ,я под подпиской - не имею права ничего никуда выкладывать,поэтому извините Если уж вы обсуждаете рабочие проблемы на публичном форуме, то будьте добры прикладывать минимально воспроизводимые примеры. Не имеете права копипастить - постирайте пальчики о клавиши и набейте "такое же, но без перламутровых пуговиц". ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.04.2021, 19:23 | 
  
  
  
   | 
||
| 
 
Как избежать проблем ) 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Basil A. Sidorov asv79 я ж те сказал уже по этому поводу - нельзя ,я под подпиской - не имею права ничего никуда выкладывать,поэтому извините Если уж вы обсуждаете рабочие проблемы на публичном форуме, то будьте добры прикладывать минимально воспроизводимые примеры. Не имеете права копипастить - постирайте пальчики о клавиши и набейте "такое же, но без перламутровых пуговиц". к сожалению не имею права- а менять код целиком - я того рот шатал - лучше на стаке спросить тут то толку набивать новый код руками - петро сразу придет - тему засрет - помощь будет дай бог от пары человек - поэтому однозначное нет коду на этом форуме ,учитывая что они сливают по запросу инфу о тебе ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.04.2021, 21:52 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?all=1&fid=59&tid=2120462]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    57ms | 
get topic data:  | 
    9ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    91ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 12ms | 
| total: | 200ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...