• Как спроектировать базу для интернет-магазина?

    @m0nym
    Монгу сейчас бездумно советуют везде, даже не понимая ее недостатков и достоинств и целесообразности в том или ином случае.

    Особенно забавно читать в одном предложении про два разных принципиально решении для одной и той же задачи.

    Вот ликбез по теме:

    https://youtu.be/SNzOZKvFZ68
    https://youtu.be/9v6i15xclxA

    Монго хороша, если вы собираетесь уходить в кластер в обозримом будущем.
    Иначе - смысла в ней нет.
    А вот JSONB в PostgreSQL - как раз подходящее решение под эту задачу.
  • Как спроектировать базу для интернет-магазина?

    @m0nym
    JhaoDa, мне - незачем.
    у меня вообще полноценная FTS.

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

    @m0nym
    JhaoDa, Полагаю, можно использую полнотекстовый поиск у MySQL как то и там умудриться.

    Если он гибконастраиваемый этот поиск.
    Нужно только отключить стемминг (фильтры же не склоняются и не спрягаются).

    Например так:

    ИД или имя товара                        Фильтр
    Товар №1                                       цветзеленый размербольшой назначениедлякухни
    Товар №2                                       материалдеревянный размербольшой назначениедлякухни
    Товар №3                                       материалметаллический цветголубой


    То есть запихать все фильтры в одно поле и понадеется, что полнотекстовый нормально отработает в MySQL.

    Важно:
    1) стемминг (отсечение окончаний слов) нужно бы отключить
    2) сложно-составные фильтры нужно писать одним словом, чтобы токенизер полнотекстовой системы их не разбил на отдельные токены. Ну или настроить токенизер на восприятие только, к примеру, запятых и разделять ключевые слова запятыми.

    Тогда все будет очень просто в MySQL с FTS
  • Как спроектировать базу для интернет-магазина?

    @m0nym
    JhaoDa,
    Впрочем, как и в MySQL последних версий.


    Вы про полнотекстовый поиск в MySQL? Да, есть.
    А вот индексированный JSON в MySQL тоже завезли?
  • Как спроектировать базу для интернет-магазина?

    @m0nym
    Максим Федоров,
    по большей части вам хватит классической нормальной (от слова 3 нормальная форма) структуры, а это EAV


    Если у магазинчика 2 покупателя в день - да, хватит.
    Зачем учиться у плохих решений?
  • Как спроектировать базу для интернет-магазина?

    @m0nym
    Nikolino,
    Всё что пока понятно это то, что фильтрация с распределением таблиц по EAV, это JOINы и поэтому это медленно.


    Если вам всенепременно хочется в SQL, то нужно денормализовать". То есть свести все к минимуму таблиц.
    Типа такого:

    Название товара                                   Фильтр №1    Фильтр №2   Фильтр №3
    Название или ID товара №1                 Истина           Ложь             Истина
    Название или ID товара №2                  Ложь             Ложь              Истина
    Название или ID товара №3                  Ложь             Истина           Ложь

    По колонкам "Фильтр №X" - естественно, нужен индекс.

    Однако для СУБД со схемой, каковой является все реляционные SQL-СУБД - это неудобно.

    Впрочем, в PostgreSQL, к примеру, есть тип данных JSONB, который позволяет сделать schemaless-решение. Причем, что важно - JSONB будет проиндексирован Постгресом.
    Не путать с другими типами JSON, именно JSONB и именно в PostgreSQL.

    Сомневаюсь, что в MySQL есть проиндексированный JSON.
  • Как спроектировать базу для интернет-магазина?

    @m0nym
    Nikolino,
    Пожалуй это очень сложно для новичка. Я понимаю как работает Sphinx, но по-моему он больше подходит для поиска, а не для фильтра и-магазина.


    1) Ничуть не сложнее SQL. Если не будешь стремиться преодолевать сложности - и не научишься ничего. Да тут и не сложности вовсе. Имхо, проще, чем SQL.

    2) Более чем подходит. Как ни странно, но алгоритмически и фасеточный и полнотекстовый поиск - по сути одно и то же, несмотря на разницу в названиях.

    Как работает алгоритм полнотекстового поиска:

    1) Исходный текст разбивается на слова, от слова убираются окончания (то есть вместо "красный", "красная", "красному" - одно слово "красн"). Получается т.н. "терм".

    2) Для каждого терма строится индекс вида "0101" (только длиннее гораздо), где каждый 0 и 1 в каждой позиции соответствуют какому-то вашем случае товару (в терминах полнотекстовых систем это обозначается словом "документ", но в вашем случае "документ" = "товар").

    3) Если нужно найти где встречается фраза "красные вурдалаки" - ищется для терма "красн" (это "0101...") и для терма "вуралак" (это, к примеру, "1001..."). Берется пересечение и получаем ответ "0001...", то есть товар №4.

    4) В случае фильтров - работает ровно так же. Только "терм" = "значение фильтра".

    Поэтому что для полнотекстового, что для фасеточного эти системы пригодны одинаково. Алгоритм будет идентичен.

    1), 2), 3), 4) - представлять надо, но знать не нужно. Это все делает сам SphinxSearch и пр.

    Схема приведена упрощенно. В развитых системах есть индексация и чисел (то есть можно делать фильтр по числу и искать числовые диапазоны").

    Главное - это все работает мгновенно даже для очень сложных фильтров.
    Так как там всего навсего 2 операции: поиск по B-дереву (найти битовую маску для терма) и логические AND/OR по битовой маске.

    В можете сочетать и поиск с подсказками на лету и фильтрацию - и это будет наааааааамного быстрее чем в SQL, а уж тем более с EAV.
  • Стоит ли новичку в Python использовать сразу PyCharm?

    @m0nym
    neol, а... его используют потому что в описании есть слово Python?
    других причин не вижу.
  • Стоит ли новичку в Python использовать сразу PyCharm?

    @m0nym
    Владимир,
    Например ?


    Да то же форматирование. Собственно, та бяка с кривыми отступами, - как не били программистов по рукам за это - так они и косячили и косячат. Гвидо решил проблему в Питоне кардинально. Однако для лучшего понимания нужно бы ручками расставлять и мозгом головы контролировать. Чтобы понимать. А то начинающие программисты чуть ли не художественные пано из отступов делают, ибо не понимают что к чему - за них умные IDE решают.

    Автоимпорты - то же на этапе обучения это зло. Да, потом в работе с ними приятно и нужно. Но на этапе обучения - лучше понимать что к чему и вписывать импорты вручную.

    И т.д. и т.п.
  • Стоит ли новичку в Python использовать сразу PyCharm?

    @m0nym
    spaceatmoon,
    а вы это поймете когда будете работать над закрытым коммерческим продуктом у которого и документации толком особо нет.


    Мы про обучение или уже про зрелого программиста?
  • Стоит ли новичку в Python использовать сразу PyCharm?

    @m0nym
    Это не мучение.

    IDE изолирует мозг программиста от понимания ключевых моментов, которые неплохо было бы поначалу, хотя бы пару месяцев - впитать и усвоить
  • Стоит ли новичку в Python использовать сразу PyCharm?

    @m0nym
    Код набирается много быстрее, чем в стандартном IDLE


    Кто такой загадочный "стандартный"?

    Если вы о текстовом редакторе простом - то это вовсе не IDE.
    Во всех IDE, если они действительно IDE - набираться будет код все так же быстро.
  • Какую cms выбрать для магазина с 10к позиций?

    @m0nym
    Mark, очередной "убийца 1С"?
    который думает, что весь фокус в интерфейсе?
  • Как отменить последние слои в docker image?

    @m0nym
    Ну так то идеология Докера - чтобы каждый раз собирать проект.
  • Что менять и править на сайте для быстрой загрузки?

    @m0nym
    АртемЪ,

    Ну чуть дальше по сайту пройтись main.css размером 1,7мб


    если на сервере http включено сжатие, то это не проблема.
    текст очень хорошо сжимается.
  • Что менять и править на сайте для быстрой загрузки?

    @m0nym
    Конечно 2М - это немало.
    Но в современных реалиях - вполне себе рядовой сайт

    Эта страничка - 3,54М (с рекламой, конечно).
  • Как оценить и продать сайт с доменом, если ко мне обратились с предложением?

    @m0nym
    Олег Муравейко,
    Я в принципе показал, только методу расчета.
    Доход от сайта за год.
    Можно считать еще через 7% от среднего чека .
    И тут еще фактор . Покупатель будет нести убытки без Вашего сайта первые 6-9 месяцев.
    Можно прикинуть цену как 10-20% от них (аренда офиса, производственной базы, простой оборудования, з/п сотрудникам. Все надо платить, а заказов нет).


    Почему за год?
    Что случится через год?

    Почему 1000 рублей или 7%?

    Покупатель нести убытки не будет. Он явно в теме иначе зачем бы стал скупать это барахло и строить на нем свой бизнес.
  • Нужен ли монитор с млрд цветов?

    @m0nym
    Makrut,
    а где вы увидели "экономию"? в сообщении: я рассматриваю вариант покупки ВТОРОГО монитора, помимо ПРОФЕССИОНАЛЬНОГО?


    Одним не обойдетесь.

    Нужно, если уж вы решили пойти таким путем - несколько проверочных.
    TN для десктопа, Amoled для планшетов/смартфонов и дешевый IPS
    И это все только дополнительно к основному монитору.

    PLS/*VA - не нужно, это не так часто встречается.
    Статистически ;)
  • Нужен ли монитор с млрд цветов?

    @m0nym
    Makrut,

    1) Изначально дизайнеру нужен хороший монитор, чтобы видеть все косяки лучше. Особенно это заметно будет на градиентах.

    2) Так как видит картинку пользователь - вы никогда и ни при каких обстоятельствах не сможете посмотреть. В современном мире (в отличие от верстки, где все хоть худо бедно, но все же стремится к стандарту) - мониторы слишком разнообразны.

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

    Все придумано до нас - есть понятие цветовых профилей, proof color, web color и пр. - что позволяет хоть как-то, но гарантировать, что хоть что то пользователь да разглядит.
  • Нужен ли монитор с млрд цветов?

    @m0nym
    Думаю берите какой вам удобно, так как передача цвета даже у среднестатистических мониторов разная)


    Какой угодно? Самое убогое дешевое TN, ага?

    В таком случае у пользователей запросто может оказаться монитор лучше чем у дизайнера - IPS сейчас копейки стоит и посему его частенько берут и "обычные пользователи".

    Получится вот что:

    "Типа дизайнер" банально не увидит дефект изображения в своем недомониторе (в градиентах, к примеру, часто встречается). И 80% пользователей - тоже не увидят.

    А 20% увидят ужастные косяки.
    И что самое примечательное, что эти 20% люди с несколько чуть большими финансовыми возможностями (мониторы у них же несколько подороже).
    То есть эти 20% - как раз те, что тратят деньги больше, в том числе и на сайтах.

    Вот такая "экономия".