wizzard: (Default)
[personal profile] wizzard

оно вообще неплохо. работает. только вот мне как-то кажется, что компилить C# в AST, AST в SQL, SQL в query, query в план запроса (см. серию постов [livejournal.com profile] zabivator про устройство БД) - это какой-то оверкилл. просадка перформанса в дебаге оч существенная, по крайней мере.

предметная область обычно лучше мапится на динамическое ОО (спорно, конечно, но что делать, если например взяли и ввели проездные билеты на кол-во поездок, в дополнение к проездным на определенный срок)

так вот, кажется, что идеальное API для БД и для работы с файлами – это что-то вроде коллекций, которые хранятся или в памяти, или на носителе, и имеет copy-by-reference (для RAM или private storage) или copy-by-value (для сьемных носителей) семантику. ну и индексами они могут заведовать, чего уж там, это полезно :)

что-то подобное, кажется, приветствуют ребята из Фантома ([livejournal.com profile] dz и т.д.)

UPD: ну, не все так радужно, судя по совместному с [livejournal.com profile] ev_genus экспириенсу, подводных камней там тонны :) в основном потому, что если выбросить из головы процессы, файлы и потоки, то надо всё заново придумывать. как говорится, техника безопасности написана кровью.

Date: 2009-09-18 12:51 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
> AST в SQL, SQL в query
> идеальное API для БД и для работы с файлами – это что-то вроде коллекций

Один из уровней ADO, который ниже ICommand -- смотрели?
Вроде как даже реализовано в MS SQL Server, не уверен, что выдано наружу.

Оно-то может и легко, только поддерживать (изменять при изменении БД, напр.) такой навигационный код... впрочем, часто не хуже, чем SQL-основанный.

Ностальгия -- писать на MS Access-подобном.

Date: 2009-09-18 01:25 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Динамическое ОО оно конечно хорошо, но вот когда меняется класс, для которого в базе данных уже существует множество объектов, начинаются пляски с бубном. Говорят, всякие RoR умеют апдейты для схемы в таком случае генерить, но как там это сделано, чорт его знает.
Но и от реляционных всяких фич, а так же того, что реляционные БД наиболее распространены, отказываться не хочется, а то можно было бы пойти самым тупым путем - сериализовать объект и ложить его в блоб, часто это самый простой путь.

Date: 2009-09-18 08:52 pm (UTC)
From: [identity profile] 109.livejournal.com
> сериализовать объект и ложить его в блоб

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

Date: 2009-09-18 08:56 pm (UTC)
From: [identity profile] metaclass.livejournal.com
А народ хитрожопствует в таких случаях - часть полей обычным образом в таблицах дублирует.
Но тогда мрак начинается когда надо обновить множество объектов одним запросом, уже одним SQL тут не обойдешься.

Date: 2009-09-18 09:01 pm (UTC)
From: [identity profile] 109.livejournal.com
> А народ хитрожопствует в таких случаях - часть полей обычным образом в таблицах дублирует.

во-от, а потом народ вдруг осеняет: а зачем дублировать-то? и блоб исчезает.

ну и кроме того - дополнительная мутота с десериализацией при изменении схемы.

Date: 2009-09-18 09:04 pm (UTC)
From: [identity profile] 109.livejournal.com
huh? разверните вопрос, пж.

Date: 2009-09-18 11:27 pm (UTC)
From: [identity profile] 109.livejournal.com
1 и 2 - да.
3 - json и xml - это форматы представления данных (любых), а не тип/класс объектов.

моё предыдущее удивление было связано с тем, что я пытался понять, как ваш вопрос связан с предыдущим обсуждением, а теперь я понял, что никак.

Date: 2009-09-18 11:56 pm (UTC)
From: [identity profile] 109.livejournal.com
если речь идёт о дереве, то в контексте предыдущего обсуждения имеет смысл рассуждать о том, как хранить элементы дерева. а не что делать, если дерево засунуто в блоб целиком. всё зависит от того, что вы хотите, чтобы сервер делал с вашими данными. если у вас дерево засунуто в блоб целиком, то, видимо, вам ничего не хочется с этим деревом делать. тогда ответ очевиден - ничего не делать.

Date: 2009-09-18 03:37 pm (UTC)
From: [identity profile] zabivator.livejournal.com
предметная область обычно лучше мапится на динамическое ОО (спорно, конечно, но что делать, если например взяли и ввели проездные билеты на кол-во поездок, в дополнение к проездным на определенный срок)
Динамические или статическое ПО - вопрос дистрибьюции. При правильном проектировании динамическая сборка проекта (builder + factory + another similar) аналогична статической (прогон DSL'ей).
так вот, кажется, что идеальное API для БД и для работы с файлами – это что-то вроде коллекций, которые хранятся или в памяти, или на носителе, и имеет copy-by-reference (для RAM или private storage) или copy-by-value (для сьемных носителей) семантику. ну и индексами они могут заведовать, чего уж там, это полезно :)
ACID? Multipass algs? Всё что есть в СУБД, придётся повторить, лишь в меньшем объёме.

Date: 2009-09-18 04:00 pm (UTC)
From: [identity profile] zabivator.livejournal.com
Тут нужно думать в другую сторону. Так или иначе, сейчас проще (пока что) генерировать нормализованную схему для БД, и научиться генерировать апдейты для базы, прочего.
От простого - к сложному, наращивать и документировать инструментарий

Date: 2009-09-18 08:47 pm (UTC)
From: [identity profile] 109.livejournal.com
где серия постов про устройство бд? отлистал 20 постов, не нашёл.

> C# в AST, AST в SQL, SQL в query, query в план запроса

что такое query здесь?

на самом деле всё ещё хуже: C# в AST, AST в SQL, SQL обратно в AST, но уже на сервере. то есть если бы они сподобились сделать интерфейс, принимающий прямо AST, то на два шага можно было бы всё сократить.

Date: 2009-09-18 08:55 pm (UTC)
From: [identity profile] 109.livejournal.com
сериализовать - это тривиально.

обычно sql, query, sql query - синонимы. а вот AST - это то, что получилось после распаршивания.

Date: 2009-09-18 08:56 pm (UTC)

Date: 2009-09-19 12:15 am (UTC)
From: [identity profile] 109.livejournal.com
м-да, мрачная картина, особенно если комменты почитать. у забиватора каша в голове, у остальных вообще пустота.

Date: 2009-09-19 08:34 am (UTC)
From: [identity profile] 109.livejournal.com
чё, каждый коммент там комментировать?

Date: 2009-09-21 08:54 pm (UTC)
From: [identity profile] zabivator.livejournal.com
http://zabivator.livejournal.com/331632.html?thread=7010672&format=light#t7010672 - раз
http://zabivator.livejournal.com/330306.html?thread=7005250&format=light#t7005250 - два
Мне почти достаточно информации, чтобы сделать выводы =)
Вот ещё одна такая веточка - и всё станёт на свои места.

Date: 2009-09-19 09:32 am (UTC)
From: [identity profile] 109.livejournal.com
о, нашёл наконец грамотное. в четвёртой части. написанное plumqqz :)

Date: 2009-09-19 09:44 am (UTC)
From: [identity profile] zabivator.livejournal.com
у забиватора каша в голове
Чего для просветления почитать...
Гарсиа-Молина читал - не помогло
Кормана читал - не помогло
Стивенсона читал - тоже не помогло
Криса Касперски читал - тоже не помогло
...ещё список...
Чего же делать для исправления такого кошмара, о гуру, без каши и пустоты в голове?

Profile

wizzard: (Default)
wizzard

January 2019

S M T W T F S
  12 345
6789101112
1314 1516171819
202122 23242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 05:28 pm
Powered by Dreamwidth Studios