@pgsql

Страница 1018 из 1062
Ilia
04.10.2018
10:33:32
наверняка) но мы лидер без сомнений))
Э... Вы там в горн уже оттрубили, флаг на линейке подняли?

Yaroslav
04.10.2018
10:34:02
с другого сервера приходит массив строк, и надо как то по этим делать запрос
Ну так Вам хотя бы нужно примерно то, что я показал, или нет?

Fike
04.10.2018
10:34:26
ty
собственно > Amazon RDS > 750 Hours per month of db.t2.micro database usage (applicable DB engines) Даже сервак менеджить не придется

Jack
04.10.2018
10:34:37
Ну так Вам хотя бы нужно примерно то, что я показал, или нет?
щас проверю, но вы же там делаете values хардкодно

Google
Alexey
04.10.2018
10:35:00
А почему Вам удобнее-то?
Как правило признаки нужны сразу каким-то множеством. Если нет, то из jsonb всегда достать можно.

Yaroslav
04.10.2018
10:35:15
щас проверю, но вы же там делаете values хардкодно
Причём там VALUES? Это просто вместо CREATE TABLE / INSERT — так быстрее пример написать. :)

Jack
04.10.2018
10:36:17
Причём там VALUES? Это просто вместо CREATE TABLE / INSERT — так быстрее пример написать. :)
то есть так заработает ? получил массив с сервера (fruitArrays) SELECT * FROM t WHERE fruit = ANY(ARRAY(fruitArrays))

Alexey
04.10.2018
10:36:53
Yaroslav, вы писали, что использовать специализированное key/value хранилище лучше, чем сделать TABLESPACE в мемори в пострес и хранить там. Чем лучше?)

Yaroslav
04.10.2018
10:37:02
то есть так заработает ? получил массив с сервера (fruitArrays) SELECT * FROM t WHERE fruit = ANY(ARRAY(fruitArrays))
А что такое "получил массив с сервера (fruitArrays)"? С какого сервера? В виде чего?

Yaroslav, вы писали, что использовать специализированное key/value хранилище лучше, чем сделать TABLESPACE в мемори в пострес и хранить там. Чем лучше?)
Наверное, тем, что специализированное решение для этой задачи должно быть лучше СУБД общего назначения, к которой это "прибито гвоздями" потом?

Jack
04.10.2018
10:39:20
А что такое "получил массив с сервера (fruitArrays)"? С какого сервера? В виде чего?
у меня сервер делает запрос к другому серверу, получает простейший массив строк. (все это на ноде). далле надо из sql таблицы взять все rows где в fruits есть значение из любого элемента массива. если приходит массив из "a", И "b", то взять все строки где fruits = "a" или fruits = "b". но этот массив каждый раз может быть другим

Alexey
04.10.2018
10:41:45
Наверное, тем, что специализированное решение для этой задачи должно быть лучше СУБД общего назначения, к которой это "прибито гвоздями" потом?
Тут наверно лучше в том плане, что у какого-нибудь redis-а есть снимки, которые сбрасываются на диск + свой какой-то лог (что-то вроде wal). Т.е. в случае сбоя можно восстановиться полностью.

Google
Jack
04.10.2018
10:41:53
Ну а node нормально умеет параметризованные запросы с агрументами-массивами? (Потому что не все умеют, да.)
ну я это посмотрю, но если умеет, есть стандартный механизм как все это делать ?

Alexey
04.10.2018
10:43:39
В смысле?

Yaroslav
04.10.2018
10:45:22
ну я это посмотрю, но если умеет, есть стандартный механизм как все это делать ?
В таком случае, я Вам его показал. Т.е. если (на уровне протокола) оно умеет делать аналогично: PREPARE foo(int[]) AS SELECT * FROM t WHERE t.id = ANY($1); EXECUTE foo(ARRAY[1, 2, 3]);

В смысле?
В прямом. Почему Вы думаете, что tablespace в RAM будет быстрее... чего бы то ни было?

Jack
04.10.2018
10:46:05
попробую, спасибо

Alexey
04.10.2018
10:46:34
В прямом. Почему Вы думаете, что tablespace в RAM будет быстрее... чего бы то ни было?
Быстрее, чем дефолтный (pg_default) на диске который? В памяти быстрее будет, не? ?

Yaroslav
04.10.2018
10:47:42
Быстрее, чем дефолтный (pg_default) на диске который? В памяти быстрее будет, не? ?
С чего бы? (Не забывайте, что для того, чтобы сделать такой tablespace, Вам придётся пожертвовать частью RAM.)

Sergey
04.10.2018
10:48:52
Быстрее, чем дефолтный (pg_default) на диске который? В памяти быстрее будет, не? ?
Т.е. вы будете 3X иметь эти данные : database buffers, system page cache, tmpfs

Yaroslav
04.10.2018
10:50:08
Т.е. вы будете 3X иметь эти данные : database buffers, system page cache, tmpfs
Вот-вот. Т.е., наверное, можно придумать что-то и похуже, чем tablespace в RAM... но надо постараться. ;)

Alexey
04.10.2018
10:50:39
Natalia
04.10.2018
10:51:27
Gennady
04.10.2018
10:51:31
Yaroslav
04.10.2018
10:51:36
Я понимаю, что в RAM это размещаю, иначе зачем бы я там создаел его)
Вам уже выше написали, чего Вы этим достигнете. Лучше бы Вы просто часть RAM выкинули, и то лучше бы было. ;)

Natalia
04.10.2018
10:51:42
приходите-докажем)

доказать можете?
приходите -докажем)

Sergey
04.10.2018
10:52:22
Три копии данных в памяти

Google
Alexey
04.10.2018
10:52:52
Natalia
04.10.2018
10:55:48
что-то путаете) наш сайт жив-здоров и актуален) небольшой и несложный -да, надо будет-сделаем новый, пока не надо, но не на реконструкции)

Alexey
04.10.2018
10:57:09
Это решается директивой TABLESPACE.
Тогда в этом остался вопрос. Т.е. как я понял в том коменте, что TABLESPACE позволял превратить hstore в in-memory key/value бд.

F
04.10.2018
11:01:51
есть сертификаты по postgres?

Yaroslav
04.10.2018
11:04:11
Тогда в этом остался вопрос. Т.е. как я понял в том коменте, что TABLESPACE позволял превратить hstore в in-memory key/value бд.
Да нет, не позволяет он именно этого сделать... может, что-то другое имелось в виду.

Alexey
04.10.2018
11:04:30
Окей, спасибо ?

Natalia
04.10.2018
11:15:21
А для Вас это ключевой момент и самый критичный в компании?)) то есть главное-красота, новизна и яркость сайта?)) увы) у нас работают над реальными продуктами, которые знают и видят все каждый день, реклама нам не нужна была, пока по крайней мере, так что мы ждём тех, кому важна начинка, а не оболочка. Мы ждём тех, кому интересно работать в реально крутых проектах в крутой команде)

Natalia
04.10.2018
11:21:37
Неужто над туалетной бумагой?
нет, у нас посложнее, для тех кто выходит из туалетной комнаты и смотрит вокруг))))

Yaroslav
04.10.2018
11:39:27
решилось простым SELECT * FROM "table" WHERE "column" IN (${arr});
А на сервер при этом какой запрос посылается (просто интересно)?

Yaroslav
04.10.2018
11:41:22
что вы имеете ввиду ?
То, что написал. Какой конкретно запрос Ваше приложение отправляет серверу PostgreSQL для того, что Вы показали? (Можно из лога PostgreSQL вытащить, если включить... а может, Ваш клиент тоже умеет логировать?)

Jack
04.10.2018
11:43:24
То, что написал. Какой конкретно запрос Ваше приложение отправляет серверу PostgreSQL для того, что Вы показали? (Можно из лога PostgreSQL вытащить, если включить... а может, Ваш клиент тоже умеет логировать?)
не понимаю значит. клиент отправляет запрос на сервер, сервер отправляет запрос на другой сервер, тот берет данные (этот массив) и отправляет обратно в мой сервер, а я с этим массивом делаю вот запрос на базу.

в чем подвох ?

Jack
04.10.2018
11:46:30
ну мне надо было что нить такое SELECT * FROM "table" WHERE "column" IN ('value1', 'value2', 'value3'); эти value1 .... у меня приходят как массив. собственно я решил из массива этого делать строку с запятыми. получаю массив ['a', 'b', 'c'], делаю из этого 'a', 'b', 'c' строку, чтобы синтакс был норм, и кидаю внутри IN()

Yaroslav
04.10.2018
11:48:21
в чем подвох ?
Подвох в том, что запросы именно такого вида параметризовать невозможно, насколько я помню. > делат из этого 'a', 'b', 'c' строку, чтобы синтакс был норм, и кидаю внутри IN() А, так Вы совсем не то сделали, что я Вам советовал. Такой способ куда менее эффективен (впрочем, если массивы очень маленькие, то пофиг).

Google
Jack
04.10.2018
11:51:59
И да, если Вы (или это API) неаккуратно escap-ите элементы, Вы только что написали код, подверженный SQL-инъекции. :(
этим у меня занимается вроде sql-template-strings, плагин для нода. но я попробую ваш вариант и напишу . спасибо

Yaroslav
04.10.2018
11:53:24
этим у меня занимается вроде sql-template-strings, плагин для нода. но я попробую ваш вариант и напишу . спасибо
Просто, чтобы его попробовать, node должен поддерживать параметризованные запросы, и передачу параметров-массивов. Т.е. если нет, то ничего и не выйдет. ;)

Valery
04.10.2018
12:34:00
Парни, подскажите пожалуйста. Использую pg_pathman. Необходимо переименовать таблицу events в events_old. При переименовании меняется только основная таблица, дочернии таблицы остаются с таким же имением (events_1,events_2 и тд) Как можно переименовать сразу все? получается pg_pathman не может менять дочернии таблицы?

Andrei
04.10.2018
12:45:52
селектить список партиций

и переименовывать

в вики есть пример для создания индекса

по аналогии и переименование

вот же оно

do $$ declare rec record; begin for rec in select * from pathman_partition_list where parent = 'table_name'::regclass loop execute format('create index on %s (attr_name)', rec.partition); end loop; end $$ language plpgsql;

Terminator
04.10.2018
13:05:42
@mfacedgod будет жить. Поприветствуем!

many-faced
04.10.2018
13:05:56
Ребята, привет, помогите плз запрос составить: Если в table1 col1-col2 > $1, то insert into table2(col1,col2) values($2,$3)

Oleg
04.10.2018
13:08:05
Добрый день парни.. кто то знает бесплатную утилиту для графического отображения базы данных? ну со связями и всем таким. И еще один вопрос, как вы отлаживаете PL SQL. Есть какой то удобный интрумент.

Andrei
04.10.2018
13:11:29
3ка с 10-11 не особо дружит

4ка ужасна

dBeaver посоветую

если psql не угодил)

Oleg
04.10.2018
13:12:01
мб подойдёт https://www.pgadmin.org/
Ну отладку я там и провожу. А вот графическое отображение? мне нравиться очень сильно dbForge for PostgresSQL, но в бесплатной не посмотришь схему бд и вообще она сильно урезанао

Google
many-faced
04.10.2018
13:14:11
> Если в table1 col1-col2 > $1, Все записи в table1? Или как?
Если в table1 разность значений table1.col1-table1.col2 > $1 (подразумевается, что там однозначный Where table1.id=10),

, то в table2 нужно вставить.

Yaroslav
04.10.2018
13:17:59
Если в table1 разность значений table1.col1-table1.col2 > $1 (подразумевается, что там однозначный Where table1.id=10),
Так? insert into table2(col1,col2) SELECT $2, $3 FROM table1 WHERE table1.id=10 AND (table1.col1-table1.col2) > $1;

many-faced
04.10.2018
13:21:01
Так? insert into table2(col1,col2) SELECT $2, $3 FROM table1 WHERE table1.id=10 AND (table1.col1-table1.col2) > $1;
нет, я видимо, не верно выразился. INSERT INTO table2 здесь совершенно отдельные колонки и совершенно отдельные значения, не связанные с table1

Мне нужно саму операцию INSERT INTO table2 выполнить только в том случае, если в первой таблице проверка прошла успешно

Yaroslav
04.10.2018
13:23:20
нет, я видимо, не верно выразился. INSERT INTO table2 здесь совершенно отдельные колонки и совершенно отдельные значения, не связанные с table1
А где Вы видите в моём примере, чтобы они были связаны? ;) > Мне нужно саму операцию INSERT INTO table2 выполнить только в том случае, если в первой таблице проверка прошла успешно Что здесь и происходит (если Вы правильно описали то ограничение, что выбирается не более 1 записи). Вы попробовали?

Yaroslav
04.10.2018
13:25:14
нет, т.к. я видимо не понял запись. Откуда берутся данные для вставки в table2 здесь?
> values($2,$3) Я так понял, что у Вас это параметры, нет? Вот из них и берутся.

Yaroslav
04.10.2018
13:26:38
а куда их вписать?
В смысле? Вы их куда/как вписывали в VALUES? Поступите аналогично и в этом случае.

many-faced
04.10.2018
13:27:32
В смысле? Вы их куда/как вписывали в VALUES? Поступите аналогично и в этом случае.
insert into table2(col1,col2) values($3,$4) SELECT $2, $3 FROM table1 WHERE table1.id=10 AND (table1.col1-table1.col2) > $1; так?

Yaroslav
04.10.2018
13:29:39
many-faced
04.10.2018
13:30:15
Нет. Буквально так, как я написал.
тогда я не понимаю, где в вашем коде эти значения.

Yaroslav
04.10.2018
13:30:51
тогда я не понимаю, где в вашем коде эти значения.
Да вот же они! ;) insert into table2(col1,col2) SELECT $2, $3 FROM table1 WHERE table1.id=10 AND (table1.col1-table1.col2) > $1;

many-faced
04.10.2018
13:35:25
Да вот же они! ;) insert into table2(col1,col2) SELECT $2, $3 FROM table1 WHERE table1.id=10 AND (table1.col1-table1.col2) > $1;
Я был не знаком с такой конструкцией. Большое списибо, работает!

Страница 1018 из 1062