• Как обновить тип поля в маппинге elasticsearch?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Разочарую - мапинг обновить нельзя! Можно только добавлять новые поля.
    Ваши действия - делаем новый индекс с правильным мапингом до заливки данных в этот индекс, переливаем туда старые данные, например через _reindex api - https://www.elastic.co/guide/en/elasticsearch/refe...
    И да, агрегации с разными типами одного поля работать не будут.

    Как создать мапинг? Отдельная песнь - описана в подробностях здесь - https://www.elastic.co/guide/en/elasticsearch/refe...
    Обычно делается перед заливкой данных. Там еще кроме мапинга есть settings - отже отдельная песнь.
    Ответ написан
    4 комментария
  • Для чего идеальна MongoDb? Примеры приложений, где монга будет лучше mysql?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Я расскажу Вам про личный опыт, без претензий на истину в последней инстанции...

    Для чего идеальна MongoDb? Примеры приложений, где монга будет лучше mysql?
    Для человека который привык работать с реляционными БД, смириться с логикой и вообще с подобными БД - довольно сложно. Для тех, кто работает с реляционными БД профессионально - сделать это ещё сложнее...

    Если сравнивать с реляционными БД и с оглядкой на конкретно MySQL - монга идеально вписывается там, где структура данных заранее неизвестна. Тут я хотел привести пример, но не смог придумать ни одного дельного примера, после того как начал плотно работать с PostgreSQL... Давайте попробую из практики. Мы один раз применяли монгу в проекте где есть десятки и сотни тысяч товарных позиций и у каждой из них свой уникальный набор различных свойств. На основе уже имеющихся свойств, "соседних" товаров, контентщику предлагался наиболее вероятный набор параметров, которые нужно заполнить, но в любой момент он мог удалить или добавить любое поле и/или множество значений одного из них, например, "Цвет: черный, серый, фиолетовый". Всё это дело попадало под разные динамические фильтры и далее по цепочке... В то время, насколько я помню ещё не было поддержки JSONB-формата у PostgreSQL, по этому мы остановились на MongoDB. Ну и конечно же, желание "воткнуть ультра новую и модную БД в проект" сыграло свою роль...

    Что в монге определённо не нравится (и это не моя "идея", об этом пишут даже в учебниках под монге) - это тотальная денормализация данных. Которая в некоторых случаях может сыграть злую шутку. Например, все комментарии "поста" обычно хранятся прямо в самой сущности поста. Это очень удобно и довольно быстро работает, но... иногда это приводит к полному коллапсу. Особенно, когда у Вас перекрестная ссылочность.

    Безусловно, не редко можно встретить проекты в которых даже в реляционных БД не прописаны, например, внешние ключи и контроля целостности данных как такового нет, но обычно это происходит по следующим причинам:
    1. Очень низкая квалификация администратора БД проекта
    2. В попытке выжать из базы больше производительности, не найдя других методов оптимизации
    3. Данных настолько много, что БД/ключи - начинают "сыпаться", не редко это связано с п.1

    Так же, последние тесты показывают, что PostgreSQL почти не уступает MongoDB даже в её родной среде (на уровне данных в формате JSON). А в некоторых аспектах даже превосходит её... Подробности Вы можете увидеть на некоторых конференциях по Postgres (да, на конференциях по MongoDB, Вы вряд ли увидите, как кто-то будет рассказывать, что [их любимая] монга "хуже" некоторых других движков...). Кстати, поддержку формата JSON стандартизировали (наконец-то) на уровне SQL-стандарта (если я не ошибаюсь) и в самом ближайшем будущем, думаю стоит ожидать полноценную поддержку оного в SQL-базах, в т.ч. поддержку в бинарном виде с возможностью индексации данных (кстати, некоторые SQL-базы уже такое умеют).

    Моё понимание, ответа на вопрос, "когда действительно стоит использовать MogoDB?" звучит примерно так: Исключительно в тех случаях, когда Вы понимаете, что она станет действительно хорошим решением для поставленной задачи и сейчас и в будущем. В моей практике, таких проектов можно было бы насчитать ничтожно мало, а точнее около нуля, особенно с учётом развития некоторых современных SQL-БД и вообще направления "JSON в SQL" в целом. Но, безусловно такие проекты могут быть и есть (в данном случае, не у меня). Но, тут стоит обратить внимание на крайне важный факт - когда всплывает такой проект, что бы адекватно оценить наиболее оптимальную БД под него - нужно знать как минимум пару-тройку SQL-БД, со всеми их особенностями, достоинствами и недостатками... причем не просто "знать", а хорошо знать, "изнутри". А так же знать все характерные черты монги, а так же её особенности, достоинства и т.д. То есть, если Вы задаётесь вопросом, "а хорошо ли впишется монга в проект N?" и не можете найти на него однозначного ответа, вероятнее всего, что в долгосрочной перспективе, в "проект N" она впишется плохо.

    P.S. В заключение, хочу ещё раз напомнить, что "JSON в SQL" - активно развивается... Со всеми вытекающими.
    Ответ написан
    7 комментариев
  • Как оптимизировать алгоритм для выполнения 5 задачи с проекта Эйлера?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Задачу можно решить и без перебора.
    Для начала, берёте все числа от 2 до 20 и раскладываете на простые множители.
    Как-то так:
    2 = 21
    3 = 31
    4 = 22
    5 = 51
    6 = 21·31
    7 = 71
    8 = 23
    9 = 32
    10 = 21·51
    11 = 111
    12 = 22·31
    13 = 131
    14 = 21·71
    15 = 31·51
    16 = 24
    17 = 171
    18 = 21·32
    19 = 191
    20 = 22·51
    Затем берёте максимальные степени из всех разложений и перемножаете их:
    24·32·51·71·111·131·171·191 = 232792560
    Ответ написан
    Комментировать
  • Куда лучше поставить ssd?

    a13xsus
    @a13xsus
    Lazy developer
    SSD ставишь на место HDD, а HDD ставишь в адаптер на место DVD-привода. Инфа 100%. В магазине фигню сказали.
    Ответ написан
    Комментировать
  • Какой хостинг выбрать для работы в Европе?

    hetzner - а тчо есть замена ?
    Ответ написан
    Комментировать
  • Чем профилировать PHP 7.1 в production?

    DevMan
    @DevMan
    платно:
    blackfire
    newrelic
    tideways

    бесплатно:
    xdebug
    форк xhprof
    Ответ написан
    Комментировать
  • NGINX - как привязать все микросервисы, запущенные на разных портах, к одному домену без поддоменов?

    @Wexter
    location ^~ /api/v1/auth {
        proxy_pass http://127.0.0.1:8000;
        include proxy_params;
    }
    location ^~ /api/v1/catalog {
        proxy_pass http://127.0.0.1:8001;
        include proxy_params;
    }
    Ответ написан
    Комментировать
  • Hetzner шлет письма с жалобой на сервер?

    AxianLTD
    @AxianLTD
    Правильно пишут. Закройте порты NetBIOS снаружи, вы все равно ими скорее всего не пользуетесь. А бомбить вас через них будут. А если разбомбят или окажется что ваш сервер участвует в "reflection attack", то по правилам у вас просто отключат сервер.
    Ответ написан
    Комментировать
  • Как выйти из спам-листа google?

    Гугл очень часто использует базу Спамхаус. Выберетесь оттуда - Гугл скорее всего пропустит.
    Ответ написан
    Комментировать
  • Что лучше поставить вместо FreeBSD?

    @Tabletko
    никого не трогаю, починяю примус
    4 комментария
  • Какой мониторинг для сервере лучше выбрать?

    @amirkhonov
    netdata хорошая система для мониторинга в режиме реального времени
    Ответ написан
    Комментировать
  • Какой локальный сервер выбрать для mac?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    homebrew -> install nginx, php-fpm, mysql
    Ответ написан
    Комментировать
  • NGINX - как задать сайту псевдоним/alias?

    miraage
    @miraage
    Старый прогер
    через пробел в server_name.
    Ответ написан
    Комментировать
  • Какой аналог денвера лучше использовать?

    Sanes
    @Sanes
    Open server
    Ответ написан
    Комментировать