Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Разработка информационных систем Новый топик    Ответить
 Библиотека хранимок на pgsql  [new]
Серджио
Member

Откуда:
Сообщений: 15
Здравствуйте.
Не так давно написал небольшую либу хранимок на постгресе. Направление: разработка самописных cms, crm и т.п. Хотя что-то можно внедрить частично в уже имеющийся проект. Было бы интересно услышать ваши мнения. http://pgweb.org
С уважением, Сергей.
2 авг 18, 11:13    [21623774]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
hVostt
Member

Откуда:
Сообщений: 15228
Серджио,

Может и остальной код из cms/crm перенести, чего уж? )
2 авг 18, 12:25    [21624225]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
alex55555
Member

Откуда:
Сообщений: 1727
Серджио
Не так давно написал небольшую либу хранимок

Разбираться в чужих небольших либах обычно себе дороже. Проще с нуля написать.
2 авг 18, 13:06    [21624451]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
hVostt
Member

Откуда:
Сообщений: 15228
Серджио,

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

Но вдруг кто-то захочет форкнуть и допилить, завести тикет и т.д.
2 авг 18, 13:14    [21624491]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 491
очень сложно придумать ей применение при создании CRM/магазина
автор
например, при загрузке файлов, когда нужно сгенерировать уникальное имя, или когда нужно создать CSRF-токен и т.п.

во1, зря вы думаете, что надо всё пихать в БД. БД всегда является узким местом, её вообще лишний раз дёргать не надо. Лазать в БД за CSRF-токеном это дичь.
во2, на пхп генерация рандомной строки занимает ~15 строк
/* ГЕНЕРАЦИЯ СЛУЧАЙНОЙ ПОСЛЕДОВАТЕЛЬНОСТИ СИМВОЛОВ
$size   размер требуемой строки
$type   0-9, a-Z, hex, pass, 0-9a-z, 0-9a-Z

ВЫЗОВ: $gen = give_rand_str(32 [, '0-9a-Z'])

тест на время:
строка  1.000
массив  1.390
*/
    function give_rand_str($size, $type = false)
    {
        $tmp = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // default: 0-9a-Z

        switch ($type)
        {
            case 'pass':        $tmp .= "-_,.:;!";              break; // пароль
            case '0-9':         $tmp = "0123456789";            break;
            case 'hex':         $tmp = "0123456789abcdef";      break;
            case '0-9a-z':      $tmp = "0123456789abcdefghijklmnopqrstuvwxyz";                  break;
            case 'a-Z':         $tmp = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";  break;
            default: break;
        }

        $tmp_size = (strlen($tmp) -1);
        $result = '';
        while ($size--) {$result .= $tmp[mt_rand(0, $tmp_size)];}

        return $result;

    } // give_rand_str
2 авг 18, 15:53    [21625255]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
Серджио
Member

Откуда:
Сообщений: 15
hVostt, не вижу особого смысла.

полудух, отчасти согласен. Но рассмотрим ситуацию, когда нам нужна уникальная строка, а не просто рандомный набор букв и цифр. Например, это может пригодиться при загрузке файлов, чтобы каждый раз не придумывать новое имя, достаточно запросить его у базы. Или при генерировании ключа сессии. При этом мы можем быть уверены, что имена не пересекутся и нам не нужно следить за уникальностью. Насчет узкого места: согласен, та же пыха быстрее в вычислениях. Но ведь можно запросить не один ключ, а сотни-тысячи ключей еще при старте приложения и потом раздавать их.
2 авг 18, 16:49    [21625556]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
Изопропил
Member

Откуда:
Сообщений: 30999
Серджио,

GUID никак?
2 авг 18, 17:31    [21625729]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
Серджио
Member

Откуда:
Сообщений: 15
Изопропил,

а ничего, что из него можно вытащить дату создания? Да и потом, у него фиксированный размер.
2 авг 18, 17:39    [21625754]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 491
Серджио
Но рассмотрим ситуацию, когда нам нужна уникальная строка

https://ru.wikipedia.org/wiki/UUID
https://postgrespro.ru/docs/postgresql/10/datatype-uuid
но юзать 32 байта для хранения имён файлов опять перебор
проще хранить int/bigint (всего 4-8 байт), а уникальность либо через bigserial, либо чекать наличие в БД

ключ сессии генерит сам ПХП
в CSRF не нужны UUID

Но ведь можно запросить не один ключ, а сотни-тысячи ключей еще при старте приложения и потом раздавать их.

для чего они? Там и так 0 оверхеда будет. Вы либо вызываете соседнюю ф-ю, либо дёргаете редиску, где в списках лежат эти ключи. Ф-я быстрее.
В любом случае реляционная БД тут всё ещё не нужна.
2 авг 18, 18:11    [21625865]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
Изопропил
Member

Откуда:
Сообщений: 30999
Серджио
а ничего, что из него можно вытащить дату создания? Да и потом, у него фиксированный размер.

и что с того?
если паранойя - хэш возьмите
2 авг 18, 18:34    [21625935]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
hVostt
Member

Откуда:
Сообщений: 15228
Серджио
Изопропил,

а ничего, что из него можно вытащить дату создания? Да и потом, у него фиксированный размер.


ничего. фиксированный размер 128 бит это вселенских масштабов объём. мало? берём два штуки и лепим. хотим скрыть дату создания? делаем xor по битовой маске. да и вообще, какие-то притянутые за уши глупые идеи с целью просто впихнуть свою поделку.
2 авг 18, 19:49    [21626146]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
hVostt
Member

Откуда:
Сообщений: 15228
полудух
во1, зря вы думаете, что надо всё пихать в БД.


вообще, логика в БД это два шага назад. особенно забавно выглядит идея прикрутить поделки, которые есть во всех фреймворках, покрыты тестами и работают максимально быстро. зачем они в бд, и где тесты, нет их. обычный набор поделок из бумаги, через это все проходили.
2 авг 18, 19:51    [21626149]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 491
hVostt
хотим скрыть дату создания? делаем xor по битовой маске.

картинки по запросу "хог по битовой маске":
Картинка с другого сайта.
2 авг 18, 20:25    [21626224]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека хранимок на pgsql  [new]
Изопропил
Member

Откуда:
Сообщений: 30999
Серджио
Было бы интересно услышать ваши мнения.

пустая трата сил
2 авг 18, 21:22    [21626340]     Ответить | Цитировать Сообщить модератору
Все форумы / Разработка информационных систем Ответить