|
|
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Имеется небольшой опыт... Моя программа на данный момент работает с MSSQL начиная с 2000 (на 97 не тестил... както подумал что не нужно тревожить дедушек). FoxPro, Interbase, MySQL (4,5),DB2, Access, XML (просто куча файлов) и даже 1С (через СОМ-взаимодействие). Как сказано было выше - это все грустно. Отказ от хранимых процедур и функций, от встроенных системных процедур и функций (например GetDate() etc.). Ессно нет всяких ультра современных типов данных (например geometry). И как следствие падение производительности - ибо все приходится делать на клиенте. Чисто с точки зрения спортивного интереса (или прихоти заказчика) занятся таким извращением можно. НО! Есть же например бесплатный SQLExpress. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2012, 12:01 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
AlexsalogА что вообще опыт генерации SQL на основе каких то отношений так уж неудачен ? Вот предлагали взять ОРМ. Там между прочим SQL генерируется.Нежизнеспособна идея описать "всё" декларативно какими то "отношениями". Поэтому собственно и неудачны ОРМ в чистом виде, как идея. При этом разумное использование всяких фреймворков без фанатизма вполне жизнеспособно. "мысль описывать запросы в неком СВЕРХ SQL" - вполне нормальная. Но вообще говоря, это есть идея просто нового языка, она множество раз реализована. Кобол, X++, ABAP - вполне рабочие варианты "некоего СВЕРХ SQL", хотя для эффективности и/или для преодоления ограничений приходится вставлять прямые запросы к базовой СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2012, 19:43 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
В принципе не такой уж и миф. При использовании ограниченного набора фич вполне можно удовлетвориться ОРМ. Что нужно.. стандартные типы данных, счетчики, limit/offset. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 09:26 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
ЛагманВ принципе не такой уж и миф. При использовании ограниченного набора фич вполне можно удовлетвориться ОРМ. Что нужно.. стандартные типы данных, счетчики, limit/offset.Разве что для несложной морды для БД. А вот сложную отчетность делать - начинается капец, т.к. единственно доступный "суперSQL" сводится к фильтрации/навигации по датасету. На клиенте. С собиранием промежуточных вычислений там же (в переменных, времянках и пр.). Очень уныло. зы: наблюдал, как Навижн собирал в отчет остатки товаров по магазину всю ночь (40 тыс. позиций). Именно вышеизложенным методом. Поэтому часто для подобных операций применяют внешний полноценный SQL. При этом "кроссплатформенность" разумеется катится к чертям. :) Уже молчу про внешний вид этого "полноценного SQL". 1С-ники поймут. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 10:26 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Максим НCane Cat FisherА бизнес-логика? Она вообще предполагается? Она тоже будет через ORM? А БЛ на стороне клиента соответсвенно То есть притягиванием данных на клиента, и перебиранием в циклах. В принципе, это возможно. Производительность и прозрачность, прощай! Добро пожаловать в начало 90-х! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 11:05 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
LSVА вот сложную отчетность делать - начинается капец Там капец начнётся задолго до этого. При первом же косяке оптимизатора на любой из поддерживаемых СУБД например. Алгоритм обучения сервера правильным хинтам в конкретном запросе совершенно не бьётся с универсальным СВЕРХ SQL-ем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 11:33 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
LSV, последнее время склоняюсь к тому, что отчеты это вообще очень отдельная часть. Хотя и логика при которой нельзя посчитать сумму одним запросом, скорее всего результат кривоватой модели данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 12:05 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Хотя и логика при которой нельзя посчитать сумму одним запросом, скорее всего результат кривоватой модели данныхОга... ну посчитай одним запросом полную себестоимость многодокументной сделки на дату ХХХХХ. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 12:24 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
LSV, запросто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 12:33 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Вот, запрос даже. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 12:35 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
ЛагманХотя и логика при которой нельзя посчитать сумму одним запросом, скорее всего результат кривоватой модели данных. Я тебе даже больше скажу. Когда в исходной постановке задачи есть требование "одним запросом" - это результат кривой логики. Количество запросов - это следствие оптимальности (некривоватости) или неоптимальности (кривоватости). А не исходная предпосылка, что один запрос всегда выиграет у всех прочих реализаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 13:26 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов, Под "количеством запросов" я имел ввиду количество обращений к БД. Оно не должно зависеть от количества документов, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 13:45 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовКогда в исходной постановке задачи есть требование "одним запросом" - это результат кривой логики. Возможно, одна из поддерживаемых СУБД просто неспособна обеспечить консистентность данных между разными запросами, только внутри одного. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 14:43 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Лагманя имел ввиду количество обращений к БД. Оно не должно зависеть от количества документов, например. Почему не должно? Кому не должно? Исходная предпосылка формулируется как правило довольно тупенько: чтобы быстро и надёжно. И всё, дальше крутись как можешь. Это тебе не собеседование, это реальная жизнь. Решается одним запросом - ура. Быстрее двумя запросами - изволь порвать свой шаблон в клочья, но сделай. Тем более, если надо универсально (сколько опыта подержки зоопарка СУБД - ни разу поддержка нового не приводила к уменьшению числа запросов, к увеличению и делению - было). Dimitry Sibiryakovодна из поддерживаемых СУБД просто неспособна обеспечить консистентность данных между разными запросами, только внутри одного. Ну да, транзакций нет, уровней изоляции нет,... - я боюсь что в таком случае либо вопрос легко решается корректной декомпозицией запросов, например тривиальным предварительным расчётом параметров, либо "СУБД просто неспособна" безо всяких уточнений, ну или разные небольшие модификации этих крайних ситуаций "по мотивам". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 15:16 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовНу да, транзакций нет, уровней изоляции нет,... Ну вот, например, Оракул: транзакции есть, изоляции есть, но на умолчательном Read Committed консистентность не обеспечивается даже для подзапросов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 15:44 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovно на умолчательном Read Committed консистентность не обеспечивается даже для подзапросов Это про то, что сдуру можно много чего сломать? Поциент мечтает об одном запросе , число подзапросов и всё прочее его вообще не интересует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 16:32 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovRead Committed Read Оnly и состояние БД заморожено до commit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 17:47 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
_модRead Оnly и состояние БД заморожено до commit А вот это уже - зависимость приложения от СУБД, точнее от поддерживаемых ею уровней изоляции. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 18:47 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov_модRead Оnly и состояние БД заморожено до commit А вот это уже - зависимость приложения от СУБД, точнее от поддерживаемых ею уровней изоляции. Тем не менее это непохоже на "СУБД просто неспособна обеспечить консистентность данных". Просто определённая зависимость типа " добавлять или нет from dual к select 1". Да многие вообще не парятся уровнями изоляции, я по своим большим проектам не больше десятка раз насчитал управление ими, остальное отдано DBA в виде мануала настройки ради. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 22:19 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovСергей ВаскецовНу да, транзакций нет, уровней изоляции нет,... Ну вот, например, Оракул: транзакции есть, изоляции есть, но на умолчательном Read Committed консистентность не обеспечивается даже для подзапросов. Дим, я знаю, что Вы не читатель, но ведь какой-нибудь наивный юноша Вам сдуру и поверит.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 22:32 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
softwarerкакой-нибудь наивный юноша Вам сдуру и поверит.... Да мне-то пофиг кому поверит наивный вьюношь - мне или концептам: Note: Transactions containing DML statements with subqueries should use serializable isolation to guarantee consistent read. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 22:41 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Ну Вам-то понятно, что пофиг. Вам даже не стыдно привести цитату, мягко говоря не полностью совпадающую с Вашим утверждением. А уж почитать всё остальное, подумать и разобраться... Ладно, специально ради наивных вьюношей: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2012, 23:42 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovА вот это уже - зависимость приложения от СУБД, точнее от поддерживаемых ею уровней изоляции. Вот и я о том же - за независомость надо платить, иногда много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 09:46 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
softwarerSQL> insert into t(id) select rownum from dual connect by level <= 1000000; Видимо, это формально это попадает под Statement-Level Read Consistency: The SQL statements SELECT, INSERT with a subquery, UPDATE, and DELETE all query data, either explicitly or implicitly, and all return consistent data. А чтобы увидеть бяку в подзапросе, как я понял, надо там функцию вызывать: If a SELECT list contains a function, then the database applies statement-level read consistency at the statement level for SQL run within the PL/SQL function code, rather than at the parent SQL level. For example, a function could access a table whose data is changed and committed by another user. For each execution of the SELECT in the function, a new read consistent snapshot is established. Или в каких-то еще случаях это проявляется? Оракла под рукой нету, а интересно :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 11:04 |
|
||
|
Независимость приложения от СУБД
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherВидимо, это формально это попадает под Statement-Level Read Consistency: Да нет, на самом деле всё проще. Про процитированную Димой фразу ещё лет десять назад Том Кайт сказал примерно так: "Не знаю, что это за бред, думаю, это ошибка в документации". Cane Cat FisherА чтобы увидеть бяку в подзапросе, как я понял, надо там функцию вызывать: Это да, в read committed запрос внутри функции считается с собственной согласованностью, не связанной с запросом, вызвавшим функцию. Cane Cat FisherИли в каких-то еще случаях это проявляется? Оракла под рукой нету, а интересно :-) Скажу осторожно: других таких случаев я не знаю (ну если мы не говорим о явных командах, скажем select as of scn). Кстати, с помощью такой команды можно и сделать согласованность с родительским запросом, если есть такое желание, но я не видел, чтобы на практике это использовали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 11:16 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37965414&tid=1541542]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 398ms |

| 0 / 0 |
