• Можно ли такое реализовать с помощью MySQL?

    @Akina
    Сетевой и системный админ, SQL-программист.
    В рамках реляционной СУБД для описанной схемы есть несколько принципиально разных подходов.

    Первый - одна таблица и NULL в полях, отсутствующих у конкретного типа, её описывает Сергей Соловьев, вариант 2.
    Второй - использование EAV. Удобно, динамично, но проблемы с производительностью. Хотя из всех паттернов для реляционных СУБД он походу наиболее применим для фасетного поиска.
    Третий - использование сериализованного формата хранения. Например, хранение свойств объекта в формате JSON. Но, поскольку требуется поиск по атрибутам, в этом случае необходимо будет использовать внешний поисковый движок, возможно, даже ориентированный на фасетный поиск, или будет ужас как медленно.

    Использование MongoDB на описанном материале (буквально пара типов объектов) мне кажется не очень соответствующим решением. Хотя зависит от планируемого объёма данных.
    Ответ написан
    Комментировать
  • Можно ли такое реализовать с помощью MySQL?

    @KingstonKMS
    1. Если полей для разных типов не много, то можно сделать все в одной таблице. Но это, как написали, денормализованный вариант.
    2. Отдельные связанные таблицы для хранения параметров разных типов оптимальный вариант с учётом возможного увеличения как параметров, так и типов аккаунтов.
    3. Но вы можете и json хранить в базе, осуществлять поиск и индексацию, см. https://dev.mysql.com/doc/refman/8.0/en/json.html
    Ответ написан
    3 комментария
  • Можно ли такое реализовать с помощью MySQL?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Можно, даже несколькими способами:
    1. Отдельные таблицы с характеристиками по каждому аккаунту. Например, для стима типа
    create table product_steam_info(product_id int, level int, balance double)
    и для телеги соответственно.
    Чтобы получить результат полный - SELECT с JOIN'ом (left join нужен будет)
    2. Все в одной таблице хранишь
    create table products(product_id int, steam_level int, telegram_is_premium boolean)

    Если у кого-то нет телеги или стима, то эти поля просто будут null

    Предлагаю использовать последний вариант, т.к. его проще реализовать и будет быстрее (т.к. локальность данных больше и нет join'ов), но таблица может стать большой слишком когда много типов аккаунтов будет
    Ответ написан
  • Какую key-value БД использовать с данными в 10 млрд строк записей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей.

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

    2) MySQL который указан в тегах - нормально справляется с этой задачей. Он и не такое число строк
    умеет хранить. И если взять MariaDb - там есть куча новых engines которые можно крутить для тюнинга
    именно скорости чтения. Разумеется жертвуя чем-то другим. Транзакциями и записью например.

    3) Непонятно что такое минимальное время? Если использовать дисковую БД типа MySQL то деградация времени
    поиска будет примерно зависеть от логарифма количества строк. Тоесть деградация будет но очень медленно.
    Для 10 млрд индекс по key будет содержать порядка 4-5 уровней BTree дерева. Тоесть дисковой системе
    нужно будет сделать до 5 или до 6 рандомных чтений (если нужные данные лежат в таблице). Это достаточно
    быстро для того чтобы моргнуть глазом за это время. Рандомное чтение любого блока из магнитного диска
    класса SATA-3 занимает порядка 20 милисекунд. Тоесть для 5 уровней - это 100 милисекунд. Для дисков
    класса SSD и это время можно уже считать меньше милисекунды. Точно я не знаю надо мерять.

    Испортить это время может сетевой лаг который в данной задаче мы просто не учитываем. Считаем что сеть идеальна.

    4) Непонятно зачем здесь указан Redis. Его задача не хранить 10 млрд а хранить только горячие
    ключи по котороым идет очень частый доступ. Если автор хочет In-memory хранение - то время можно
    еще сильнее улучшить. Его можно свести практически до нуля (я вангую несколько микро-секунд)
    но придется прикупить планок памяти побольше и посчитать сколько памяти
    надо для 10 млрд key/values неизвестной длины. Вообще крутить регулятор в направлении
    микро-секунд нет особого смысла т.к. другие звенья вашего стека (приложение и сеть) могут
    быть на порядки медленнее а это вообще нивелирует всю пользу от такой оптимизации.
    Ответ написан
    41 комментарий
  • Почему методы выводят None?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Прочитайте документацию по этим методам. Именно в документацию нужно идти прежде чем задавать вопросы на подобных ресурсах.
    Вас удивляет, что эти методы не годятся для "чейнинга", поскольку не возвращают нистанс своего объекта? Думаю не это.
    Эти методы модифицируют объект на месте (inplace), а не возвращают новый. После вызова метода сортировки список стал отсортированным. А одноименная функция формирует новый список, куда в отсортированном порядке копирует содержимое оригинального
    Ответ написан
    1 комментарий
  • Как скрыть пароль в php-коде?

    @humoured
    Вы всё на свете найдёте в коробке с карандашами
    Пароль нужно выносить из кода в отдельный файл конфигурации. Dotenv, например.
    Такой файл добавляется в .gitignore, не коммитится в общую кодовую базу и каждый разработчик будет наполнять его своими (или общими) данными. Ваш личный пароль не попадёт в чужие руки.
    Ответ написан
    31 комментарий
  • Как сформировать запрос с учетом математического выражения?

    Maksim_64
    @Maksim_64
    Data Analyst
    SELEСT ID
    FROM таблица
    WHERE fakt < size AND farm = 1

    где WHERE оставит только те ряды для которых fakt < size AND farm = 1 будет истинно. (TRUE)
    (Не заметил с утра вы хотите выбрать только ID колонку по этому изменил с SELECT * (выбрать все) на (SELECT ID) (выбрать ID))
    Ответ написан
  • Почему слетают стили и картинки при изменении роутера?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну как обычно, относительные пути в картинках.
    Пути к локальным ресурсам всегда должны представлять собой абсолютный путь от корня сайта.
    Ответ написан
    1 комментарий
  • Почему появляются теги a?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Теги не закрыты
    6309f84d0ea01054577471.png

    Если бы вы писали код нормально, а не через ж (это я про html в строках), то IDE вам бы указала на эти опечатки.

    6309fa2c3aebc861365597.png
    Ответ написан
    2 комментария
  • Как выполнить такой запрос?

    Fragster
    @Fragster
    помогло? отметь решением!
    UPDATE
        Table_A
    SET
        Table_A.col1 = Table_B.col1,
        Table_A.col2 = Table_B.col2
    FROM
        Some_Table AS Table_A
        INNER JOIN Other_Table AS Table_B
            ON Table_A.id = Table_B.id
    WHERE
        Table_A.col3 = 'cool'
    Ответ написан
    Комментировать
  • Как запретить напрямую обращаться к скриптам?

    @galliard
    Делаешь папку src и public, в public кладешь index.php, а все остальное в src.
    В конфигурации сервера в качестве папки, где лежит сайт, указываешь папку public.

    Из файла index.php подключаешь все файлы как __DIR__ . '/../src/нужныйфайk.php'.
    Ответ написан
    Комментировать
  • Какие изучить курсы \ книги, поясняющие принцип работы роутинга?

    gordon_shamway
    @gordon_shamway
    https://www.apress.com/us/book/9781430241645

    Исходный код routera, по нему можно понять как все устроено.
    https://github.com/nikic/FastRoute
    Ответ написан
    Комментировать
  • Какими знаниями php нужны чтобы начать изучать laravel?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Нужно ли знать интерфейсы и трейты, регулярные выражения?

    Не нужно, так многие делают. Получается полная херня, но они считают, что нормально. Это как сесть за руль, сказав «ПДД обязательно потом буду учить».
    Ответ написан
    Комментировать
  • Какими знаниями php нужны чтобы начать изучать laravel?

    DollyPapper
    @DollyPapper
    Всеми и никакими одновременно. Laravel это фреймворк. Фреймворк это такая штука которая как раз абстрагирует от многих вещей которые нужно знать. Когда происходит утечка абстракции , тогда вам нужно что-то изучать поверх. Конечно же нужно иметь базу по самому языку, т.к. фреймворк на нем написан, т.е. если $a = 10; вам ни о чем не говорит, что этот оператор делает, то конечно изучать ларавел рано. В общем начинайте учить, а по ходу будете восполнять знания, другого совета тут дать нельзя.
    Ответ написан
    Комментировать