Чувствую, что несу чушь,
Oct. 23rd, 2012 11:27 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
но не могу отделаться от ощущения, что с эволюцией баз данных нас очень сильно наебали.
Это по поводу этого: http://plumqqz.livejournal.com/323506.html
Меня очень сильно бесит расхождение технологий: с одной стороны, классические СУБД, с другой NoSQL, с третьей - всякие in-memory распределенные базы, с четвертой - всякие аналитические БД с column storage, сжатием данных и перекосом в сторону чтения типа vertica, sybase iq или забиваторской QD. Плюс еще всякие datomic до которой я никак добраться не могу.
Все это, очевидно, между собой мало совместимо, решает разные задачи, требует каких-то дурных миграцией данных между собой и превращает работу с большим количеством данных в тыкву, потому что вместо одного толкового решения существует десяток решений разной степени безумности, требующих интеграции.
Это по поводу этого: http://plumqqz.livejournal.com/323506.html
Меня очень сильно бесит расхождение технологий: с одной стороны, классические СУБД, с другой NoSQL, с третьей - всякие in-memory распределенные базы, с четвертой - всякие аналитические БД с column storage, сжатием данных и перекосом в сторону чтения типа vertica, sybase iq или забиваторской QD. Плюс еще всякие datomic до которой я никак добраться не могу.
Все это, очевидно, между собой мало совместимо, решает разные задачи, требует каких-то дурных миграцией данных между собой и превращает работу с большим количеством данных в тыкву, потому что вместо одного толкового решения существует десяток решений разной степени безумности, требующих интеграции.
no subject
Date: 2012-10-23 11:30 am (UTC)Итак, делаем таблицо "хенератор" о двух полях - имя и валуй. Клиент, который хочет получить пачку айдюков для последующей вставки сначала отправляет запрос
begin transaction;
а потом
select * from "хенератор" where "имя"='thetable' for update;
а потом отмечает себе, что от (валуй+1 до валуй+дельта] - это его айдюки и он их может использовать, после чего говорит
update "хенератор" set "валуй"="валуй"+:дельта where "имя"='thetable';
а потом еще и
commit;
Так клиент может получить вдоволь айдюков, а я - поделиться нынешним тайным знанием.
no subject
Date: 2012-10-23 11:43 am (UTC)в стандарте такое есть?
no subject
Date: 2012-10-23 11:52 am (UTC)Не совсем понятно, что вы имеете в виду под термином "атомарная транзакция" - вообще-то транзакция по определению атомарная. Еще более атомарная?
в стандарте такое есть?
Что "такое"? Вышенаписанное вполне соответствует SQL92; а что там есть именно такой код - это я сомневаюсь.
no subject
Date: 2012-10-23 06:02 pm (UTC)no subject
Date: 2012-10-23 08:13 pm (UTC)Для этого одна транзакция должна быть вложена в другую, что должно быть отражено в стандарте.
Или я перемудрил?
no subject
Date: 2012-10-23 08:20 pm (UTC)no subject
Date: 2012-10-24 05:07 am (UTC)no subject
Date: 2012-10-24 04:32 pm (UTC)В JDBC есть функция для получения сгенеренных идентификаторов, должно работать для любой базы.
no subject
Date: 2012-10-24 05:22 pm (UTC)Если вы соьираетесть вставлять в таких количествах, что у вас могут возникнуть проблемы с блокировками с этим кодом, то у вас сильно раньше возникнет куча других.
JDBC. тоже не св.духом пользуется, если что.