metaclass: (Default)
[personal profile] metaclass
но не могу отделаться от ощущения, что с эволюцией баз данных нас очень сильно наебали.
Это по поводу этого: http://plumqqz.livejournal.com/323506.html
Меня очень сильно бесит расхождение технологий: с одной стороны, классические СУБД, с другой NoSQL, с третьей - всякие in-memory распределенные базы, с четвертой - всякие аналитические БД с column storage, сжатием данных и перекосом в сторону чтения типа vertica, sybase iq или забиваторской QD. Плюс еще всякие datomic до которой я никак добраться не могу.

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

Date: 2012-10-23 09:57 am (UTC)
From: [identity profile] metaclass.livejournal.com
А как в стандарте обстоят дела с двумя вещами: автоинкрементные поля/генераторы-секвенсы и возвращение результата последней DML операции (т.е. вернуть из insert/update значения полей, которые были автосгенерированы)?

(deleted comment)

Date: 2012-10-23 10:10 am (UTC)
From: [identity profile] nicka-startcev.livejournal.com
Вот все и решают, разными несовместимыми и непереносимыми способами.
А потом жалуются на пиздец.
(deleted comment)

Date: 2012-10-23 10:28 am (UTC)
From: [identity profile] nicka-startcev.livejournal.com
запад видим, восток не видим, да.

Date: 2012-10-23 05:58 pm (UTC)
From: (Anonymous)
Тоесть проблемы индейцев шерифа.... Дык в жопу такого шерифа. Я думал я один такой дурак, но вот вопль "автоинкрементные поля/генераторы-секвенсы и возвращение результата последней DML операции (т.е. вернуть из insert/update значения полей, которые были автосгенерированы"

Это уже не просто вопль. В отличае от меня этот человек что, то пишет и не первый год и у него такие вот вопросы.

Насчет DB2 ну не знаю. MySQL и MS SQL по сравнению с ним это уже не то.
(deleted comment)

Date: 2012-10-23 07:02 pm (UTC)
From: [identity profile] metaclass.livejournal.com
ADO сам по себе вроде не умеет же?

Date: 2012-10-23 10:23 am (UTC)
From: [identity profile] plumqqz.livejournal.com
А, собственно, если так уж надо, то чего бы после инсерта-апдейта не запросить значения полей, которые были сгенерированы?

Date: 2012-10-23 10:29 am (UTC)
From: [identity profile] gds.livejournal.com
как это сделать при вставке в таблицу в случае отсутствия любого другого ограничения уникальности, кроме того, которое включает автогенерируемый столбец?

Date: 2012-10-23 10:31 am (UTC)
From: [identity profile] plumqqz.livejournal.com
То есть, если я правильно понимаю, в таблицу вставляется незнамо что? Странно как-то...

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

Date: 2012-10-23 10:59 am (UTC)
From: [identity profile] gds.livejournal.com
вставляется знамо что, но не обязанное быть уникальным.

про генератор -- по силам, конечно, но речь была про стандарт. Конечно, мне никуда не впёрлось перетаскивать программу с одной субд на другую, поэтому мне неактуально, но стандарт однако не даёт способа узнать последний вставленный id.

Date: 2012-10-23 11:03 am (UTC)
From: [identity profile] plumqqz.livejournal.com
вставляется знамо что, но не обязанное быть уникальным.
Если вставляется то, что не является уникальным, то нахера оно вообще вставляется? Типа дублирование - ну вроде как для надежности? Как написал какой-то руководитель, "пришлите мне четыре прозрачных однопиксельных гифа".

про генератор -- по силам, конечно, но речь была про стандарт.
Я, собственно, про стандарт и пишу - т.е. написать собственными силами, используя стандартный sql-92, генератор айдюков не по силам. Ок, ясно.
Edited Date: 2012-10-23 11:03 am (UTC)

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-10-23 11:22 am (UTC) - Expand

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2012-10-23 11:30 am (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2012-10-23 11:43 am (UTC) - Expand

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2012-10-23 11:52 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2012-10-23 06:02 pm (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2012-10-23 08:13 pm (UTC) - Expand

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2012-10-23 08:20 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-10-24 05:07 am (UTC) - Expand

(no subject)

From: [identity profile] Дмитрий Васильев - Date: 2012-10-24 04:32 pm (UTC) - Expand

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2012-10-24 05:22 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-10-23 07:03 pm (UTC) - Expand

Date: 2012-10-23 06:00 pm (UTC)
From: (Anonymous)
Что еще написать? может собственную СУБД? Нахрен она такая нужна которая обычную задачу не делает?

Date: 2012-10-23 07:13 pm (UTC)
From: [identity profile] plumqqz.livejournal.com
Скажите, а вы хорами имена объектов не шифруете?

Date: 2012-10-23 10:33 am (UTC)
From: [identity profile] metaclass.livejournal.com
insert into table ... values ... returning есть у Firebird, Oracle, Postgresql
SELECT SCOPE_IDENTITY() - mssql
LAST_INSERT_ID() - mysql
IDENTITY_VAL_LOCAL() - db2

Date: 2012-10-23 10:35 am (UTC)
From: [identity profile] plumqqz.livejournal.com
Ну вот видите же.

Date: 2012-10-23 11:21 am (UTC)
From: [identity profile] metaclass.livejournal.com
4 разных, не сводимых друг к другу простой заменой метода. Вижу.

Date: 2012-10-23 11:23 am (UTC)
From: [identity profile] plumqqz.livejournal.com
Ну напишите свой генератор.

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-10-23 11:31 am (UTC) - Expand

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2012-10-23 11:36 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-10-23 11:40 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2012-10-23 06:05 pm (UTC) - Expand

(no subject)

From: [identity profile] maxdz.livejournal.com - Date: 2012-10-23 07:13 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-10-23 07:15 pm (UTC) - Expand

(no subject)

From: [identity profile] maxdz.livejournal.com - Date: 2012-10-23 07:17 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-10-23 07:29 pm (UTC) - Expand

(no subject)

From: [identity profile] maxdz.livejournal.com - Date: 2012-10-23 07:33 pm (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2012-10-23 07:47 pm (UTC) - Expand

(no subject)

From: [identity profile] maxdz.livejournal.com - Date: 2012-10-23 07:51 pm (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2012-10-23 08:04 pm (UTC) - Expand

(no subject)

From: [identity profile] maxdz.livejournal.com - Date: 2012-10-23 08:09 pm (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2012-10-23 08:18 pm (UTC) - Expand

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2012-10-24 06:55 am (UTC) - Expand

(no subject)

From: [identity profile] maxdz.livejournal.com - Date: 2012-10-25 10:54 am (UTC) - Expand

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2012-10-25 11:00 am (UTC) - Expand

(no subject)

From: [identity profile] maxdz.livejournal.com - Date: 2012-10-25 11:12 am (UTC) - Expand

Date: 2012-10-23 06:02 pm (UTC)
From: (Anonymous)
Причем очень смешно работает LAST_INSERT_ID() при многопоточности! Офигенно!

Date: 2012-10-23 11:24 am (UTC)
From: [identity profile] w00dy.livejournal.com
Обычно возвращать нужно только pk записи. А его можно генерировать на клиенте, тот же гуид например. Я так делаю и меня эти вопросы не волнуют.

А в жире, например, сделали отдельную табличку с генераторами, и при необходимости выделяют блоками.

Date: 2012-10-23 11:33 am (UTC)
From: [identity profile] metaclass.livejournal.com
GUID, да. 16 байт на PK, 16 байт в записях индексов и FK и прочих полей. Не уверен, что это гуманно.

Date: 2012-10-23 11:47 am (UTC)
From: [identity profile] w00dy.livejournal.com
Зато pk всегда есть на клиенте, и когда создаёте записи то можно просто впихнуть пачку insert-ов, а не городить выборку непонятно чего.

Date: 2012-10-23 03:47 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
В стандарте используются таблицы вида "tablename : last_pk_value"
либо (при наличии оптимизации и точки контроля) делают select max(id) + 1 from table / retry on commit fail

> т.е. вернуть из insert/update значения полей, которые были автосгенерированы

это уровень API, а не SQL

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 20th, 2025 08:21 am
Powered by Dreamwidth Studios