• Нормально ли хранить json в MySql?

    @deliro
    p.s в дальнейшем по этим данным будет производится сортировка.

    Если будет JSON - нет, не будет.
    Или берите Postgres.
    Ответ написан
    Комментировать
  • Нормально ли хранить json в MySql?

    @kondaurov
    Full stack developer
    Постановка вопроса интересная - Нормально ли блаблабла.
    Сделайте сначала как думаете, храните динамичные поля в json поле строки таблицы. Потом когда задолбает писать sql запросы по извлечению этих полей вы сами поймете что нужно где хранить. Нормально то что решает конкретно ваши проблемы.

    Postgresql умеет работать с json, но приходится писать десериалайзеры и сериалайзеры этих полей при сохранении и извлечении. Мне это не нравится, дополнительный код.
    Посмотрите для интереса что умеет делать Mongo. Сейчас меня будут критиковать, типа человек работает с релиационными бд, но если вы не знакомы с ней то я считаю это будет полезной информацией
    Ответ написан
    Комментировать
  • Нормально ли хранить json в MySql?

    finnish
    @finnish
    Теория
    Реляционные базы подразумевают, что все часто используемые поля должны храниться в отдельных столбцах. В какой-то момент Вам понадобится искать/сортировать по городу, а его хранение внутри JSON сделает эту операцию крайне сложной.
    Все преимущества JSON-а сводятся к тому, что в одной записи можно "легко" добавить или удалить какое-то поле, не прибегая к модификации таблицы. Лёгкость написана в кавычках потому, что модификация одного поля выполняется сложнее, чем первоначальная запись всего объекта: взять JSON; преобразовать в объект; модифицировать значение нужного поля; преобразовать в строку; записать её в базу данных. И делать это нужно будет средствами приложения, MySQL на это просто не способен.

    Практика
    Использование JSON является нормальной практикой. Если возникает необходимость выполнять поиск по какому-то полю, оно выносится в отдельную колонку. Работы по переносу рутинные, но требуют внимательности от программиста, т.к. путь до значения изменился. Например, раньше было user.data.city и стало user.city.

    Сейчас набирает популярность PostgreSQL, где работа с JSON выведена на уровень SQL-синтаксиса. Там Вы сможете легко добавлять/модифицировать/удалять отдельные JSON-поля, не прибегая к помощи приложения. Даже индексы поддерживаются!..
    Ответ написан
    3 комментария
  • Зачем нужен bower?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Прелесть bower в возможности ставить зависимости куда тебе надо, а не в node_modules. Это незаменимо на легаси-проектах, например.
    С другой стороны, если ты и на сервере и на клиенте юзаешь, например, momentjs, или у тебя изоморфный рендеринг на react — то не будешь же ставить одно и то же два раза двумя разными менеджерами.
    Ответ написан
    Комментировать
  • Какие данные хранить в mongodb, в какие в mysql?

    Sanovskiy
    @Sanovskiy
    Веб-разработчик с 2005 года
    А зачем вам в данном случае вообще Mongo? Опции вполне нормально можно джойнить при условии, что индексы проставлены верно. После первого раза запрос закэшируется и будет работать довольно быстро. Это при условии, что вы пишете запрос с использованием биндов.
    Ответ написан
    2 комментария
  • Как грамотно связать работу backend и frontend?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Думаю, что лучше взять ES6 + Babel + Webpack. Может я ошибаюсь и лучше взять что-то другое?
    Нормально.

    Использовать сервер только для получения каких-либо данных, а бизнес-логику поручить клиентсайду? SPA или классический сайт?
    Так вы задайте себе вопрос, у вас SPA или классический сайт? Приложение или газета? Gmail нет смысла делать классическим сайтом, визитку нет смысла делать SPA.
    Ответ написан
    2 комментария
  • Как грамотно связать работу backend и frontend?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Просто выберите концепцию:
    1. Тонкий клиент. Все рисует сервер, клиент лишь берет на себя чисто визуальные штучки, вроде анимаций, переключений элементов и т.п.
    2. Толстый клиент. Сервер передает клиенту только данные через Rest API. Желательно наличие на стороне клиента како-то фреймворка (эмбер, ангуляр и т.п.)

    Имейте в виду, что толстый клиент или SPA не имеет смысла сам по себе, ну разве что вы уже их сотню сделали и вам ничего не стоит сделать еще один. Он имеет смысл тогда, когда ваш сервер одновременно работает на приложения для разных платформ (смартфоны, планшеты и десктоп). В таком случае проще сделать единый сервер и общий Rest API, через который разные клиенты будут получать данные.

    Делать такое для одного сайта, по сути лишняя работа.
    Ответ написан
    9 комментариев
  • Как побороть свою лень?

    Bandicoot
    @Bandicoot
    Вась-программист
    Я просто сразу начинаю писать код, не думая о результате. Настраиваю себя на рабочий процесс. Потом, когда уже пойдет-поедет и я войду в состояние "потока", начинаю работать с умом. Просматриваю, что уже написал. При необходимости переписываю и решаю, что делать дальше.
    Сначала нужно вообще что-то сделать, затем сделать это правильно и потом сделать как следует.
    Ответ написан
    1 комментарий
  • Для чего нужна ORM?

    Zorkus
    @Zorkus
    Сам по себе ORM, именно как maaping, в крупных проектах нужен как раз очень сильно. Опишу здесь свой опыт. Если понравится кому, может и статью потом.

    Итак.
    Представьте себе — у меня есть очень крупная система, и есть в ней таблица orders, в ней скажем, 50 колонок (на самом деле у нас 150, ну да ладно. Нормализаторы, молчать! Про нормальные формы я тоже знаю). И вот надо значит вам выбрать один ордер и показать его на экране. Допустим, вы пишете селект, неважно. Дальше что делать, в промежуточном слое? Вы не же вызываете хранимую процедуру (запрос) напрямую с, скажем, JSP страницы (я надеюсь), вам все равно надо получить данные и передать их как-то.
    Так что, передавать их в виде массива, ArrayList-a, ассоциативного массива имя колонки/значения? Ну так дико громоздно, неудобно, и очень легко ошибиться. А если вам надо несколько ордеров, тогда что, создавать вложенные коллекции для конвертации результатов? Неудобно же.

    Потому, очевидно, нам нужен объект Order, имеющий все нужные property, и нужен код, который умеет конвертировать результаты скл запрос в эти объекты (или коллекцию этих объектов).

    Далее, очевидно, что писать руками _все_ запросы трудно и нудно, легко ошибиться, т.к. в Java они будут представляться в коде в виде строк (а значит, никакой статической типизации и compile-time проверок и прочее и прочее), и их надо держать либо в Java коде (если они мелкие), либо, если побольше, выносить в отдельные XML файлы.

    В общем, ORM в больших проектах нужен для упрощения рутинной части. Без него — никуда :)

    Безусловно, обойтись ТОЛЬКО ORM не получится. Есть у нас масса мест, где сложная логика написана в хранимых процедурах в 500-1000 строк на PL/SQL, написанная через ORM /Java она бы занимала в 10 раз больше и работала в 2 раза медленнее (при этом, она была бы еще и менее понятная, т.к. есть такая логика, которые в терминах реляционной алгебры описывается куда проще, чем в терминах ООП :), следовательно ложится на ORM со скрипом). Сколько нибудь сложные запросы с подзапросами, юнионами, хитрыми джойнами тоже писать через чистый ORM громоздко. Оптимизировать запросы, работающими в таблицах где, хотя бы, несколько сотен миллионов записей, без доступа к планам SQL оптимизатора и статистики/средствам мониторинга уровня СУБД тоже крайне сложно. Так что без SQL тоже — никуда :)
    Ответ написан
    3 комментария
  • Для чего нужна ORM?

    WebByte
    @WebByte
    По моему скромному мнению, ORM придумали люди, которым сложновато мыслить теорией множеств, что необходимо для понимания и правильного применения SQL.

    Практической пользы от ORM в серьезных проектах чуть меньше, чем от какого-нибудь, прости, Господи, скрама.
    В мелких — реальная польза лишь в том, что кто-то будет себя считать крутым ООП-программистом.

    Как всегда, рекомендую статью:
    citforum.ru/database/articles/vietnam/
    Ответ написан
    4 комментария