• Что лучше при архитектуре базы данных?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    Описываемое называется мультитенантностью. Правильная реализация зависит от конкретных требований к системе, вырастающих из того, какие отношения между тенантами. Однако, таблицы с префиксами - это однозначно плохое решение, лучше использовать раздельные схемы.
    Ответ написан
    1 комментарий
  • Что лучше при архитектуре базы данных?

    @Jack444
    Если бд строите под энтерпрайз левел и у вас планируются милиарды строк в таблицах то вполне годно добавлять префиксы и группы таблиц скидывать на отдельные сервера а после на уровне приложения менеджить запросы к нужным серверам, но скорее всего лучше посмотреть в сторону кликхаус, ядб или носиквел базы которые умееют горизонтально масштабироваться и сами распределяют данные по серверам.
    Если данных в таблице планируется набор строк до сотни милионов то схема 1 сущность=1 таблица отличный вариант
    Ответ написан
    Комментировать
  • Что лучше при архитектуре базы данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть организации и есть два способа построить бд это для каждой организации создавать копии таблиц с префиксом

    Тебе повезло. У тебя - postgres. Создай для каждой организации отдельную базу.
    CREATE DATABASE org1 OWNER moshiva;
    CREATE DATABASE org2 OWNER moshiva;

    При необходимости создай еще одного пользователя и раздай привилегии.
    Префиксы делать не надо.
    Ответ написан
    4 комментария
  • В чем отличия драйверов local и public файловой системы laravel?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Вы говорите не о драйверах, а о дисках.
    Драйвера - это другое, их 4 доступно "local", "ftp", "sftp", "s3". Это способы хранения файлов. Драйвер local - это файловая система вашего сервера.

    О дисках:

    По умолчанию диск local маппится на /storage/app, а public на /storage/app/public.
    Каталог /storage/app/public в свою очередь линкуется в /public/storage

    Отсюда вывод: диск public доступен из интернета. диск local – нет.
    Но если вы в диске local загрузите файл по пути 'piblic/image.png' то он также будет доступен по адресу site.com/storage/image.png
    Ответ написан
    2 комментария
  • Как временный файл средствами js поместить в input type=file?

    @zkrvndm
    Софт для автоматизации
    Предположим в переменной blob лежит ваш звуковой файл, тогда вставить его в поле можно вот так:
    // Создаем коллекцию:
    var dt  = new DataTransfer();
    dt.items.add(new File([blob], 'FileName.wav', {type: blob.type}));
    var file_list = dt.files;
    
    console.log('Коллекция файлов создана:');
    console.dir(file_list);
    
    // Вставим созданную коллекцию в реальное поле:
    document.querySelector('input[type="file"]').files = file_list;

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

    Fernus
    @Fernus
    Техник - Механик :)
    <?php
    
    $MASK = '+7(%d%d%d)%d%d%d-%d%d-%d%d';
    $VALUE = '1234145577';
    $arValues = str_split($VALUE, 1);
    
    $RESULT = sprintf($MASK, ...$arValues);
    
    print_r($RESULT); // +7(123)414-55-77
    Ответ написан
    Комментировать
  • Как заменить все вхождения символа на различные значения не прибегая к циклам?

    @dodo512
    $str = '1234145577';
    $mask = '+7(###)###-##-##';
    $i = 0;
    
    $result = preg_replace_callback(
        '/#/',
        function ($m) use ($str, &$i) {
            return $str[$i++] ?? $m[0];
        },
        $mask
    );
    
    echo $result;
    Ответ написан
    2 комментария
  • Как реализовать сохранение данных при помощи паттерна фабричный метод?

    alvvi
    @alvvi
    export default apathy;
    Laravel тут немного не при чем. Паттерн то можно где угодно применить.

    abstract class Presister
    {
        abstract public function factoryMethod(): Post;
    
        public function save(): void
        {
            $post = $this->factoryMethod();
            // сюда логику сохранения
            $post->save();
        }
    }
    
    class FancyPostPresister extends Presister
    {
        public function factoryMethod(): Post
        {
            return new FancyPost();
        }
    }
    
    class RegularPostPresister extends Presister
    {
        public function factoryMethod(): Post
        {
            return new RegularPost();
        }
    }
    
    interface Post
    {
        public function save(): void;
    }


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