|
|
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
Грешно ли не использовать связанные переменные? Изучаю вот код на Java, одного знакомого, и у него всякое такое встречается: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 13:11:52 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
Дьябло, хошь головоломку? Надо по числу выдать номер Экселевской колонки в буквенной нотации: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 21:14:29 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
XDiaBLoГрешно ли не использовать связанные переменные? Грешно. Воспринимайте это как аксиому. Во первых вот . Во вторых оракл например кэширует планы выполнения запросов - и такие запросы с разными idшниками будет считать разными запросами, и каждый раз будет строить для них план выполнения заново. Более того - если такие "мусорные" запросы идут в большом количестве, то они будут "вышибать" планы выполнения для других запросов из кэша - в результате производительность базы может не на шутку просесть. Так было до версии 8i включительно. На более современных версиях не выяснял - но скорее всего все то же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2009, 23:37:16 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
ЛосяшXDiaBLoГрешно ли не использовать связанные переменные? Грешно. Воспринимайте это как аксиому. Во первых вот . Во вторых оракл например кэширует планы выполнения запросов - и такие запросы с разными idшниками будет считать разными запросами, и каждый раз будет строить для них план выполнения заново. Более того - если такие "мусорные" запросы идут в большом количестве, то они будут "вышибать" планы выполнения для других запросов из кэша - в результате производительность базы может не на шутку просесть. Так было до версии 8i включительно. На более современных версиях не выяснял - но скорее всего все то же самое. Ну не знаю как там с инъекциями, я ещё его код мало изучал, но насчёт многократного построения плана выполнения согласен, фигня получается, поэтому я и заострил внимание, на неиспользовании связанных переменных. Но всё таки, интересна ситуация в MySQL и MS SQL. Сейчас и в 2003 году, когда был написан сей код. Где-то там нельзя было использовать связанные переменные, или он просто сглупил, написав этот код? Я продолжу изучать этот код, и либо отрефакторю, либо мы с ним перепишем игру на C#+Flash. Изначально там было Java+JavaScript+HTML. СУБД можно использовать разные, он говорит старался всё делать по стандарту SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 08:27:13 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
RT183.1Дьябло, хошь головоломку? Надо по числу выдать номер Экселевской колонки в буквенной нотации: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Всё фигнёй страдаешь? Хоть из запоя вышел, работу нашёл? А по теме топика ответить есть чего? Модератор: не понравился ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 08:28:14 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
> А по теме топика ответить есть чего? Я даже не знаю, что такое "связанные переменные" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 09:03:47 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
Лично модератору. Структурное мышление RT не похоже на структрурное мышление среднего программиста. Доводов не будет, но опыт наверное применить стоит. Ой, а у вас набирать можно буквы как хочешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 18:34:27 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
XDiaBLoЯ в шоке, а он отвечает: "совместимость, чтобы на всех sql серверах работало." Что за сервера такие, в которых нельзя использовать связанные переменные? Или для них просто через JDBC не получается использовать связанные переменные? Флаг ему в руки, но классический стандарт Ansi SQL существует только на бумаге. Что он будет делать со следующим запросом, который работает в Oracle но совершенно не так выглядит в MS-SQL? Код: plaintext Очевидно, что надо запасаться двумя вариантами написания запроса. Я портировал одну БД c MS-SQL на Oracle и наступил на такое огромное количество граблей, что мог написать целую книгу по best practices в этой области. Одни только JOINS чего стоят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2009, 18:43:50 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
mayton, Не, ну я так понял у него просто информация об объектах игры, хранится в базе. Запросы простейшие. Я ща в отпуске, как раз поизучаю подробнее что он там понаписал. Потом по всем пунктам с него спрошу, чем руководстовался. Причём я работал только с Ораклом, а у него игра изначально использовала MySQL, а теперь он хочет на MS SQL перейти. Причём говорит что поможет простая замена драйвера. Я проверю этот вопрос. Насчёт запросов я считаю таки нужны связанные переменные, и хоть немного ООП. Наследованием там и не пахнет, по 20 классов на несколько страниц каждый, в которых отличается пара букв. Жутковато. Классики ООП перевернулись бы в гробу, если бы не были ещё живы впрочем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 07:48:25 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
XDiaBLoПричём говорит что поможет простая замена драйвера. Я проверю этот вопрос. Простая подмена драйвера не поможет, если хотите использовать Bind-переменные ИМХО. Вам в любом случае потребуются врапперы для типов данных конкретной СУБД. Наследованием там и не пахнет, по 20 классов на несколько страниц каждый, в которых отличается пара букв. Жутковато. Классики ООП перевернулись бы в гробу, если бы не были ещё живы впрочем.Рефакторить надо. Я-бы это сделал в первую очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 08:50:29 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
XDiaBLo, Для приведенного примера - тяжелой линейкой по пальцам, почему - по топику уже объяснили. Но, в некоторых редких случаях (в основном в хранилищах данных), это может здорово помочь оптимизатору, и такой подход будет иметь право на жизнь. А в данном случае - линейкой по пальцам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2009, 09:53:37 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
donkyXDiaBLo, Для приведенного примера - тяжелой линейкой по пальцам, почему - по топику уже объяснили. Но, в некоторых редких случаях (в основном в хранилищах данных), это может здорово помочь оптимизатору, и такой подход будет иметь право на жизнь. А в данном случае - линейкой по пальцам... Да просто он практик, книжек умных не читает, считает что всё можно по документации узнать. Спорить с ним сложно, тем более я в другой крайности, больше книжки изучаю, чем практикую. Вместе возможно хорошая команда получится, каждый другого будет от крайностей спасать. Попробуем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 17:14:44 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
maytonXDiaBLoПричём говорит что поможет простая замена драйвера. Я проверю этот вопрос. Простая подмена драйвера не поможет, если хотите использовать Bind-переменные ИМХО. Вам в любом случае потребуются врапперы для типов данных конкретной СУБД. Наследованием там и не пахнет, по 20 классов на несколько страниц каждый, в которых отличается пара букв. Жутковато. Классики ООП перевернулись бы в гробу, если бы не были ещё живы впрочем.Рефакторить надо. Я-бы это сделал в первую очередь. Я тоже думаю про рефакторинг. Впрочем всё возможно будет переписано на C# и Flash, но я думаю пока изучаю готовый код на Java, можно и порефакторить будет, чтобы лучше понять код. Ща правда всё ещё Флешем занят, думаю сначала доделаю одно дело, потом за другое браться буду, нечего дёргаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 17:17:13 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
XDiaBLoВместе возможно хорошая команда получится, каждый другого будет от крайностей спасать. Попробуем. Как из слепого с глухим ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 17:37:58 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)XDiaBLoВместе возможно хорошая команда получится, каждый другого будет от крайностей спасать. Попробуем. Как из слепого с глухим ? Что уж вы так жестоко то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2009, 21:27:07 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
XDiaBLoGluk (Kazan)XDiaBLoВместе возможно хорошая команда получится, каждый другого будет от крайностей спасать. Попробуем. Как из слепого с глухим ? Что уж вы так жестоко то? Ради красного словца ... Но серьезно, не полезнее ли найти того кто одинаково силен и в практике и в теории ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 07:58:29 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan), Ну так у этого человека уже игра готовая есть, только до ума довести осталось. Не на каждом углу такие валяются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 08:52:30 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
XDiaBLoGluk (Kazan), Ну так у этого человека уже игра готовая есть, только до ума довести осталось. Не на каждом углу такие валяются. Ну лично меня мало интересуют те, что на углу валяются :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 10:27:27 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
XDiaBLoГрешно ли не использовать связанные переменные? Изучаю вот код на Java, одного знакомого, и у него всякое такое встречается: Код: plaintext универсально не получится всё равно Если нужно поддерживать несколько субд, то в программе нужно работать с интерфейсом, а не функциями, и для каждой субд реализовывать этот интерфейс. Т.к. различия слишком большие, в некоторых например нужно названия полей и таблиц писать в `. И только связанные переменные, а уж в вебе тем более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:51:49 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
barrabas, Тогда выход именно один, для каждой СУБД делать свой набор запросов в обёртке, и через интерфейс, что впрочем вы и сказали. Я кроме Оракла, ни с какой СУБД толком не работал, но в курсе что стандарт оставляет многое на усмотрение разработчиков СУБД. Просто думаю что в случае таких простейших запросов, можно найти некоторую универсальность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 19:42:27 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
XDiaBLobarrabas, Тогда выход именно один, для каждой СУБД делать свой набор запросов в обёртке, и через интерфейс, что впрочем вы и сказали. Я кроме Оракла, ни с какой СУБД толком не работал, но в курсе что стандарт оставляет многое на усмотрение разработчиков СУБД. Просто думаю что в случае таких простейших запросов, можно найти некоторую универсальность. Ну так и делать реализацию для некой абстрактной субд с виртуальными методами, а от неё наследовать и переопределять процедуры с какойто небольшой спецификой, ну а если савсем всё по другому реализовывать заново. Просто смысл в подходе, таким образом можно расширять поддерживаемые субд не пределывая "костыли", а просто добавляя реализации интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 21:11:07 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
barrabasНу так и делать реализацию для некой абстрактной субд с виртуальными методами, а от неё наследовать и переопределять процедуры с какойто небольшой спецификой, ну а если савсем всё по другому реализовывать заново. А еще лучше не изобретать велосипеды, а юзать Hibernate. Меняешь там диалект в зависимости от СУБД (одна строчка в конфиге), и забот не знаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 14:57:25 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
ЛосяшbarrabasНу так и делать реализацию для некой абстрактной субд с виртуальными методами, а от неё наследовать и переопределять процедуры с какойто небольшой спецификой, ну а если савсем всё по другому реализовывать заново. А еще лучше не изобретать велосипеды, а юзать Hibernate. Меняешь там диалект в зависимости от СУБД (одна строчка в конфиге), и забот не знаешь. а если логика в ХП на сервере. А если диалект не поддерживается или багнутый (ждать фикса?) От задачи зависит. если толстого клиента не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 15:31:41 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
barrabasЛосяшbarrabasНу так и делать реализацию для некой абстрактной субд с виртуальными методами, а от неё наследовать и переопределять процедуры с какойто небольшой спецификой, ну а если савсем всё по другому реализовывать заново. А еще лучше не изобретать велосипеды, а юзать Hibernate. Меняешь там диалект в зависимости от СУБД (одна строчка в конфиге), и забот не знаешь. а если логика в ХП на сервере. А если диалект не поддерживается или багнутый (ждать фикса?) От задачи зависит. если толстого клиента не нужно. а что мешает вам использовать Hibernate в толстом клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 15:48:49 |
|
||
|
Связанные переменные.
|
|||
|---|---|---|---|
|
#18+
ЛосяшbarrabasЛосяшbarrabasНу так и делать реализацию для некой абстрактной субд с виртуальными методами, а от неё наследовать и переопределять процедуры с какойто небольшой спецификой, ну а если савсем всё по другому реализовывать заново. А еще лучше не изобретать велосипеды, а юзать Hibernate. Меняешь там диалект в зависимости от СУБД (одна строчка в конфиге), и забот не знаешь. а если логика в ХП на сервере. А если диалект не поддерживается или багнутый (ждать фикса?) От задачи зависит. если толстого клиента не нужно. а что мешает вам использовать Hibernate в толстом клиенте? то что как раз не нужен толстый клиент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2009, 15:59:39 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36282698&tid=1344135]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
137ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 385ms |

| 0 / 0 |
