metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-10-23 11:27 am

Чувствую, что несу чушь,

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

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

[identity profile] nicka-startcev.livejournal.com 2012-10-23 09:43 am (UTC)(link)
>прикрутить ко всему этому SQL

какой именно SQL?
Диалектов этого сикеля - как собак нерезанных и по факту технический перенос чего угодно с одного на другой будет невозможен.

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

[identity profile] metaclass.livejournal.com 2012-10-23 09:49 am (UTC)(link)
Да есть стандарт на него. Но козлопитоны производители сделали миллионы расширений или не целиком реализовали стандарт.

[identity profile] nicka-startcev.livejournal.com 2012-10-23 10:08 am (UTC)(link)
это значит что стандарт негодный, не покрывающий нужную область, покрывающий не ту область, примерно как стандарт PKCS на APDU.

А негодный стандарт, который все обходят по-разному, это и есть отсутствие стандарта.

[identity profile] maxdz.livejournal.com 2012-10-23 10:11 am (UTC)(link)
Стандарт - это пересечение интересов различных компаний (т.к. именно представители от крупных компаний, работающих в области, занимаются выписыванием стандарта). ANSI SQL совсем неплох и достаточно обширен, чтобы использоваться даже без СУБД-зависимых расширений.

[identity profile] nicka-startcev.livejournal.com 2012-10-23 10:27 am (UTC)(link)
на диалекте F90 или C89 вполне можно написать код, который будет собираться почти везде и почти без гемора и даже работать. Значит, это хорошие, годные стандарты. Да, на них можно насрать, но зачастую это не требуется.

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

[identity profile] maxdz.livejournal.com 2012-10-23 10:28 am (UTC)(link)
>А вот с сикелем, как я понимаю, всё намного хужее и стандартный код будет убог до неприменимости.

Ты неправильно понимаешь.

[identity profile] metaclass.livejournal.com 2012-10-23 11:14 am (UTC)(link)
Стандартного "почти" достаточно для работы. Процедурные расширения все равно айсед использовать запрещает :)

Впрочем, язык по современным стандартам убог до невозможности.

(no subject)

[identity profile] maxdz.livejournal.com - 2012-10-23 11:46 (UTC) - Expand

(no subject)

[identity profile] falcrum.livejournal.com - 2012-10-23 15:14 (UTC) - Expand

(no subject)

[identity profile] zamotivator.livejournal.com - 2012-10-23 20:02 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2012-10-23 20:21 (UTC) - Expand

(no subject)

[identity profile] zamotivator.livejournal.com - 2012-10-23 20:22 (UTC) - Expand

(no subject)

[identity profile] zamotivator.livejournal.com - 2012-10-24 00:20 (UTC) - Expand

(no subject)

[identity profile] kika.livejournal.com - 2012-10-24 00:04 (UTC) - Expand

(no subject)

[identity profile] kika.livejournal.com - 2012-10-24 00:21 (UTC) - Expand

(no subject)

[identity profile] tzirechnoy.livejournal.com - 2012-10-26 09:54 (UTC) - Expand
(deleted comment)

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

(deleted comment)

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

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

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

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

(no subject)

[identity profile] metaclass.livejournal.com - 2012-10-23 19:02 (UTC) - Expand

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

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

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

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

(no subject)

[identity profile] gds.livejournal.com - 2012-10-23 10:59 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2012-10-23 11:03 (UTC) - Expand

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

(Anonymous) - 2012-10-23 18:02 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2012-10-23 20:13 (UTC) - Expand

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

[identity profile] metaclass.livejournal.com - 2012-10-23 19:03 (UTC) - Expand

(no subject)

(Anonymous) - 2012-10-23 18:00 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2012-10-23 19:13 (UTC) - Expand

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

(no subject)

[identity profile] plumqqz.livejournal.com - 2012-10-23 10:35 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2012-10-23 11:21 (UTC) - Expand

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

(Anonymous) - 2012-10-23 18:05 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2012-10-23 19:13 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2012-10-23 19:15 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2012-10-23 19:17 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2012-10-23 19:29 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2012-10-23 19:33 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2012-10-23 19:47 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2012-10-23 19:51 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2012-10-23 20:04 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2012-10-23 20:09 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2012-10-23 20:18 (UTC) - Expand

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

(Anonymous) - 2012-10-23 18:02 (UTC) - Expand

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

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

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

(no subject)

[identity profile] w00dy.livejournal.com - 2012-10-23 11:47 (UTC) - Expand

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

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

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

[identity profile] zamotivator.livejournal.com 2012-10-23 07:59 pm (UTC)(link)
> Но специализированные решения для хранения разряженных многомерных массивов более производительны.

О, а можно поподробней о таких решениях?
Я как раз такое пилю right now - SciDB
(deleted comment)

[identity profile] zamotivator.livejournal.com 2012-10-23 08:01 pm (UTC)(link)
Microsoft?