Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (22)

Лучшие ответы пользователя

Все ответы (27)
  • Как ускорить вставку данных в таблицу с 500 млн записей?

    @AlexHell
    Тут пишут про "не лучшее решение" а для каких задач? Автор скажите как пользоваться планируете! Для чтения много запросов? Пропорция чтения / записи какая? 80 чтений, 20 записи? Тогда индексы не удалять точно. Да и вообще вредные советы в духе "вставить пакетно без индексов".. угу, а потом ждать пока индексы построятся по этим миллионам? А если у человека записи идут постоянные, т.е это не 100% чтений, ему что удалять каждый раз индексы, вставлять данные, и заного индексы создавать? Удалять индексы можно 1 раз, для огромного пакета и при отсутствии последующих вставок в течении продолжительного времени, иначе пересоздавать и удалять - не вариант.

    Далее, советовали поменять на InnoDB - полностью поддерживаю. MyISAM очень привередлив и может легко корруптится (пруф сейчас не найду), и рекомендуется уж большие то базы (а особенно важные, даже не большие, но большие особенно) точно держать в InnoDB или xtraDB (MariaDB улучшенная версия InnoDB). Там восстановление после сбоев адекватное. По скорости работы надо проводить конкретные замеры для вашей нагрузки (чтений, записи, вашего железа), чтобы еще найти момент на котором MyISAM будет быстрее, что не факт. А восстановление после сбоев дорогого стоит.

    Что касается основного подхода: держите индексы в ОЗУ, впрочем Mysql сам это и делает, когда выделяете достаточно оперативки. в MyISAM опции погуглите для задания (если на нем останетесь). А для InnoDB нужно задавать следующие параметры
    innodb_buffer_pool_size=1024M
    innodb_log_buffer_size=4M
    innodb_log_file_size=48M
    innodb_log_files_in_group = 2
    по их настройке есть целые статьи и книги (от Зайцева в оригинале найдите если нужны подробности). От себя скажу что innodb_buffer_pool_size основная опция для держания всего в ОЗУ, если не умещаются индексы, данные, т.е. по замерам идет подкачка на диск смотрите read/write по дискам.. под linux iostat -dx 5 ; vmstat 5 ; iotop в помощь
    innodb_log_buffer_size и innodb_log_file_size задается от размера вставок, чтобы не копились в оперативке слишком много или мало - влияет на сброс лога на диск, читайте подробности и настраивайте по своей нагрузке на запись, точные цифры никто не скажет (правило настройки есть в книге и статьях).
    innodb_flush_log_at_trx_commit - доп опция, читайте что делает, может пригодиться, но для надежности лучше default.

    Если есть достаточное железо т.е. ОЗУ и диски в raid 10, то InnoDB (xtraDB) обеспечат вам адекватную вставку в 500млн таблицу с вашей несложной структурой. И чтение из нее обеспечат.

    p.s. еще человек предложил "нужно делать шардинг и держать данные в разных базах " -- частично поддерживаю. Т.е. это может быть решением если вы сможете на нескольких физических дисках (или даже серверах, но можно и на разных дисках одного серва) держать разные шарды (по-простому - части (не копии) своей области таблицы). Но это если у вас прям очень много записей. Шардинг призван ускорить запись за счет распараллеливания (по дискам, серверам).

    Хотя по вашей базе я не вижу где тут прямо очень часто надо что-то менять. Новые юзеры часто добавляются? Данные меняются каких полей и как часто? Может не всю таблицу привели и там еще что-то?
    Ответ написан
  • Как улучшить модуль обработки дерева?

    @AlexHell
    Это вот все не типизированное - ни конкретных классов\функций, а по имени передается 'setCurrentEdited' который текстовым поиском искать надо, и его опции value: false - плохо с точки зрения архитектуры

    .. но это зависит от ваших задач, можно и так оставить, если не слишком часто к этому надо возвращаться, в принципе понять можно, но тогда как минимум в отдельный каталог все эти классы, и никаких лишних зависимостей иначе разрастется еще

    p.s. а еще model, modes - очень плохое название, во 1х это отличие всего в одном символе, и в теле метода будет путаница (ктото пропустит последнюю букву), вот чисто по опыту вам скажу
    к тому же modes вообще не говорит что это за режим
    лучше - actions

    что до
    - масштабируемости
    - скорости
    .. то это вам замерять в своих условиях.. боитесь медленной интерпретации динамических имен функций и передачи им параметров? почитайте доки, может кто еще ответит
    Ответ написан
  • Как в микросервисах ограничивать доступ на уровне сущностей?

    @AlexHell
    Я сам не реализовывал микросервисы, но недавно на хабре читал про JSON Web Token да вот на википедии даж https://ru.wikipedia.org/wiki/JSON_Web_Token
    и вот еще про Access + Refresh Token https://habrahabr.ru/company/Voximplant/blog/323160/
    смысл в том есть служба аутентификации и выдачи токена, она своим секретным ключем шифрует токены (1 access или 2 access + refresh) и выдает клиенту, в простом случае я бы записал туда ID юзера и его Роль (админ, обычный юзер), и передавал с клиента на каждый микросервис, который его проверяет:
    -- в 1м из вариантов расшифровывает секретным ключем - тогда каждый микросервис знает о секрет ключе основном которым подписывал сервис аутентификации
    -- во 2м варианте юзаем ассимметричное шифрование т.е секрет знает толькосервис аутентификации а другие его беспроблемно расшифруют (меньше подвергаемся утечке ключа если много сервисов и не всем мы доверяем)

    во всех случаях сервис к которому обращается клиент не должен обращаться к сервису аутентификации что не замедляет скорость работы.
    Ответ написан
  • Стоит ли идти учиться в ВУЗ будущему программисту?

    @AlexHell
    Учишься базовым навыкам, идешь в ВУЗ, изучаешь всю программу что там дают на курсовые\лабы, и попутно доп списки литературы спрашиваешь, плюс гуглишь по колючевым словам, в ВУЗе реально дается все по верхам, но всетаки зацепляюстя базовые навыки, потом по ним гуглишь сам и читаешь умные книжки (можно не от корки до корки, а конкретные темы что проходил)
    делаешь лабы - и не только, делаешь проекты для себя - для закрепления
    делаешь больше чем треюбуют, делаешь для наработки навыков, что вот это ты умеешь, а не просто "Cи прошли", "БД прошли"

    >> Моей целью есть разработка игр, хочу создать компанию по их разработке(в
    будущем)
    гейм дев это программинг в 1ю очередь
    т.е учишься программировать
    я так понимаю не художником и не аниматором, а именно тем кто будет продумывать архитектуру, и потом ее реализовывать, тестить и чинить баги - это программинг
    геймдев - это Предметная область
    т.е прикладная разработка К..
    к бухгалтерии.. к геймдеву.. к роботостроению

    >> но я боюсь того, что "Ты всегда успеешь..." закончиться после того как умру.
    если учиться хочешь от сих до сих (условные 4 года у ВУЗе) то закончится твоя учеба и карьера норм программиста с ней же
    потому что учиться надо всегда
    и реально все лучшие годы (с 15 до 45) пройдут у тебя в обучении чемуто новому - новые технологии будут замещать старые, новые подходы к работе, новые проекты, новые требования продуктивности.. если все это пропустить, и думать что вот я учился в ВУЗе (или сам) а теперь "я все знаю" - быстро станешь не-конкурентноспособным со многими (но ниша останется, всегда будут нужны кое-какеры, которые могут от сих до сих сделать, на старой легаси технологии)

    важный нюанс - не думай, автор вопроса, что какието пару лет в ВУзе тебя спасут, не строй иллюзий якобы в том что "за 4 года делать свою компанию", смысл в том чтобы наработать навыки и узнать много нового, 4 года это реально мало.. если идти в ВУЗ и параллельно делать свои сайд проекты для подкрепления - можешь делай (о боже!) гейм дев проекты! делай змейки, крестики нолики, делай синглы, потом делай сетевые крестики нолиги, потом делай 10х10 крестики нолики, изучай minmax и теорию игр по верхам, и комбинаторику, потом пиши AI ля своих крестиков ноликов
    и вот через 4 года ты знаешь много чего и наработал много чего
    можно и в геймдев реальный (а не с корочкой и ничего не умеющим)

    .. а там на дядю
    .. или на себя - в бизнес свой.. да нужны ДОП навыки, не ВМЕСТО программинга - быть менеджером\руководителем\директором.. а доп, и это доп ГОДЫ на наработки таикх навыков
    Ответ написан
  • Есть готовые OpenSource графический редакторы для чертежей и эл. схем на .NET?

    @AlexHell
    я попользовался гуглом за вас (сам с этими либами не работал)
    https://github.com/dataweb-GmbH/NShape/
    https://stackoverflow.com/questions/2005274/free-o...
    https://github.com/circuitdiagram/circuitdiagram
    dcjtech.info/topic/list-of-open-source-circuit-dia...

    Если происходит перемещение узла/линии/прямоугольника, то соединительные линии должны автоматически удлиняться, оставаясь при этом ломаными линиями.

    такой функционал не нашел circuitdiagram (онлайн редактор есть у него), возможно в какойто отдельной либе и есть, при желании пишется - гуглите алгоритмы
    Ответ написан