Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Связанные переменные. / 25 сообщений из 28, страница 1 из 2
24.10.2009, 13:11:52
    #36270379
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
Грешно ли не использовать связанные переменные? Изучаю вот код на Java, одного знакомого, и у него всякое такое встречается:
Код: plaintext
"SELECT X,Y, MAX_WEIGHT FROM UNIT WHERE UNIT_ID=" + unit_id
Я в шоке, а он отвечает: "совместимость, чтобы на всех sql серверах работало." Что за сервера такие, в которых нельзя использовать связанные переменные? Или для них просто через JDBC не получается использовать связанные переменные?
...
Рейтинг: 0 / 0
24.10.2009, 21:14:29
    #36270727
RT183.1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
Дьябло, хошь головоломку?
Надо по числу выдать номер Экселевской колонки в буквенной нотации:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 2  -> B

 52  -> AZ

 53  -> BA

 1234567  -> BRFGI
...
Рейтинг: 0 / 0
24.10.2009, 23:37:16
    #36270817
Лосяш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
XDiaBLoГрешно ли не использовать связанные переменные?
Грешно. Воспринимайте это как аксиому. Во первых вот . Во вторых оракл например кэширует планы выполнения запросов - и такие запросы с разными idшниками будет считать разными запросами, и каждый раз будет строить для них план выполнения заново. Более того - если такие "мусорные" запросы идут в большом количестве, то они будут "вышибать" планы выполнения для других запросов из кэша - в результате производительность базы может не на шутку просесть. Так было до версии 8i включительно. На более современных версиях не выяснял - но скорее всего все то же самое.
...
Рейтинг: 0 / 0
25.10.2009, 08:27:13
    #36270983
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
ЛосяшXDiaBLoГрешно ли не использовать связанные переменные?
Грешно. Воспринимайте это как аксиому. Во первых вот . Во вторых оракл например кэширует планы выполнения запросов - и такие запросы с разными idшниками будет считать разными запросами, и каждый раз будет строить для них план выполнения заново. Более того - если такие "мусорные" запросы идут в большом количестве, то они будут "вышибать" планы выполнения для других запросов из кэша - в результате производительность базы может не на шутку просесть. Так было до версии 8i включительно. На более современных версиях не выяснял - но скорее всего все то же самое.
Ну не знаю как там с инъекциями, я ещё его код мало изучал, но насчёт многократного построения плана выполнения согласен, фигня получается, поэтому я и заострил внимание, на неиспользовании связанных переменных. Но всё таки, интересна ситуация в MySQL и MS SQL. Сейчас и в 2003 году, когда был написан сей код. Где-то там нельзя было использовать связанные переменные, или он просто сглупил, написав этот код? Я продолжу изучать этот код, и либо отрефакторю, либо мы с ним перепишем игру на C#+Flash. Изначально там было Java+JavaScript+HTML. СУБД можно использовать разные, он говорит старался всё делать по стандарту SQL.
...
Рейтинг: 0 / 0
25.10.2009, 08:28:14
    #36270985
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
RT183.1Дьябло, хошь головоломку?
Надо по числу выдать номер Экселевской колонки в буквенной нотации:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 2  -> B

 52  -> AZ

 53  -> BA

 1234567  -> BRFGI

Всё фигнёй страдаешь? Хоть из запоя вышел, работу нашёл? А по теме топика ответить есть чего?
Модератор:
не понравился ответ
...
Рейтинг: 0 / 0
25.10.2009, 09:03:47
    #36271006
RT183.1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
> А по теме топика ответить есть чего?

Я даже не знаю, что такое "связанные переменные"
...
Рейтинг: 0 / 0
25.10.2009, 18:34:27
    #36271294
АСУ ТПшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
Лично модератору.
Структурное мышление RT не похоже на структрурное мышление среднего программиста. Доводов не будет, но опыт наверное применить стоит.
Ой, а у вас набирать можно буквы как хочешь?
...
Рейтинг: 0 / 0
25.10.2009, 18:43:50
    #36271303
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
XDiaBLoЯ в шоке, а он отвечает: "совместимость, чтобы на всех sql серверах работало." Что за сервера такие, в которых нельзя использовать связанные переменные? Или для них просто через JDBC не получается использовать связанные переменные?
Флаг ему в руки, но классический стандарт Ansi SQL существует только на бумаге. Что он будет делать со следующим запросом, который работает в Oracle но совершенно не так выглядит в MS-SQL?

Код: plaintext
select * from mytable where rownum< 1000 ;

Очевидно, что надо запасаться двумя вариантами написания запроса.

Я портировал одну БД c MS-SQL на Oracle и наступил на такое огромное количество граблей, что мог написать целую книгу по best practices в этой области. Одни только JOINS чего стоят.
...
Рейтинг: 0 / 0
26.10.2009, 07:48:25
    #36271648
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
mayton,
Не, ну я так понял у него просто информация об объектах игры, хранится в базе. Запросы простейшие. Я ща в отпуске, как раз поизучаю подробнее что он там понаписал. Потом по всем пунктам с него спрошу, чем руководстовался. Причём я работал только с Ораклом, а у него игра изначально использовала MySQL, а теперь он хочет на MS SQL перейти. Причём говорит что поможет простая замена драйвера. Я проверю этот вопрос. Насчёт запросов я считаю таки нужны связанные переменные, и хоть немного ООП. Наследованием там и не пахнет, по 20 классов на несколько страниц каждый, в которых отличается пара букв. Жутковато. Классики ООП перевернулись бы в гробу, если бы не были ещё живы впрочем.
...
Рейтинг: 0 / 0
26.10.2009, 08:50:29
    #36271683
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
XDiaBLoПричём говорит что поможет простая замена драйвера. Я проверю этот вопрос.
Простая подмена драйвера не поможет, если хотите использовать Bind-переменные ИМХО. Вам в любом случае потребуются врапперы для типов данных конкретной СУБД.

Наследованием там и не пахнет, по 20 классов на несколько страниц каждый, в которых отличается пара букв. Жутковато. Классики ООП перевернулись бы в гробу, если бы не были ещё живы впрочем.Рефакторить надо. Я-бы это сделал в первую очередь.
...
Рейтинг: 0 / 0
26.10.2009, 09:53:37
    #36271792
donky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
XDiaBLo,

Для приведенного примера - тяжелой линейкой по пальцам, почему - по топику уже объяснили.
Но, в некоторых редких случаях (в основном в хранилищах данных), это может здорово помочь оптимизатору, и такой подход будет иметь право на жизнь.
А в данном случае - линейкой по пальцам...
...
Рейтинг: 0 / 0
28.10.2009, 17:14:44
    #36277944
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
donkyXDiaBLo,

Для приведенного примера - тяжелой линейкой по пальцам, почему - по топику уже объяснили.
Но, в некоторых редких случаях (в основном в хранилищах данных), это может здорово помочь оптимизатору, и такой подход будет иметь право на жизнь.
А в данном случае - линейкой по пальцам...
Да просто он практик, книжек умных не читает, считает что всё можно по документации узнать. Спорить с ним сложно, тем более я в другой крайности, больше книжки изучаю, чем практикую. Вместе возможно хорошая команда получится, каждый другого будет от крайностей спасать. Попробуем.
...
Рейтинг: 0 / 0
28.10.2009, 17:17:13
    #36277952
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
maytonXDiaBLoПричём говорит что поможет простая замена драйвера. Я проверю этот вопрос.
Простая подмена драйвера не поможет, если хотите использовать Bind-переменные ИМХО. Вам в любом случае потребуются врапперы для типов данных конкретной СУБД.

Наследованием там и не пахнет, по 20 классов на несколько страниц каждый, в которых отличается пара букв. Жутковато. Классики ООП перевернулись бы в гробу, если бы не были ещё живы впрочем.Рефакторить надо. Я-бы это сделал в первую очередь.
Я тоже думаю про рефакторинг. Впрочем всё возможно будет переписано на C# и Flash, но я думаю пока изучаю готовый код на Java, можно и порефакторить будет, чтобы лучше понять код. Ща правда всё ещё Флешем занят, думаю сначала доделаю одно дело, потом за другое браться буду, нечего дёргаться.
...
Рейтинг: 0 / 0
28.10.2009, 17:37:58
    #36277996
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
XDiaBLoВместе возможно хорошая команда получится, каждый другого будет от крайностей спасать. Попробуем.

Как из слепого с глухим ?
...
Рейтинг: 0 / 0
28.10.2009, 21:27:07
    #36278303
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
Gluk (Kazan)XDiaBLoВместе возможно хорошая команда получится, каждый другого будет от крайностей спасать. Попробуем.

Как из слепого с глухим ?
Что уж вы так жестоко то?
...
Рейтинг: 0 / 0
29.10.2009, 07:58:29
    #36278600
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
XDiaBLoGluk (Kazan)XDiaBLoВместе возможно хорошая команда получится, каждый другого будет от крайностей спасать. Попробуем.

Как из слепого с глухим ?
Что уж вы так жестоко то?

Ради красного словца ...
Но серьезно, не полезнее ли найти того кто одинаково силен и в практике и в теории ???
...
Рейтинг: 0 / 0
29.10.2009, 08:52:30
    #36278646
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
Gluk (Kazan),

Ну так у этого человека уже игра готовая есть, только до ума довести осталось. Не на каждом углу такие валяются.
...
Рейтинг: 0 / 0
29.10.2009, 10:27:27
    #36278826
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
XDiaBLoGluk (Kazan),

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

Ну лично меня мало интересуют те, что на углу валяются :)
...
Рейтинг: 0 / 0
29.10.2009, 17:51:49
    #36280641
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
XDiaBLoГрешно ли не использовать связанные переменные? Изучаю вот код на Java, одного знакомого, и у него всякое такое встречается:
Код: plaintext
"SELECT X,Y, MAX_WEIGHT FROM UNIT WHERE UNIT_ID=" + unit_id
Я в шоке, а он отвечает: "совместимость, чтобы на всех sql серверах работало." Что за сервера такие, в которых нельзя использовать связанные переменные? Или для них просто через JDBC не получается использовать связанные переменные?
универсально не получится всё равно
Если нужно поддерживать несколько субд, то в программе нужно работать с интерфейсом, а не функциями, и для каждой субд реализовывать этот интерфейс. Т.к. различия слишком большие, в некоторых например нужно названия полей и таблиц писать в `.
И только связанные переменные, а уж в вебе тем более.
...
Рейтинг: 0 / 0
29.10.2009, 19:42:27
    #36280888
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
barrabas,
Тогда выход именно один, для каждой СУБД делать свой набор запросов в обёртке, и через интерфейс, что впрочем вы и сказали. Я кроме Оракла, ни с какой СУБД толком не работал, но в курсе что стандарт оставляет многое на усмотрение разработчиков СУБД. Просто думаю что в случае таких простейших запросов, можно найти некоторую универсальность.
...
Рейтинг: 0 / 0
29.10.2009, 21:11:07
    #36281013
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
XDiaBLobarrabas,
Тогда выход именно один, для каждой СУБД делать свой набор запросов в обёртке, и через интерфейс, что впрочем вы и сказали. Я кроме Оракла, ни с какой СУБД толком не работал, но в курсе что стандарт оставляет многое на усмотрение разработчиков СУБД. Просто думаю что в случае таких простейших запросов, можно найти некоторую универсальность.
Ну так и делать реализацию для некой абстрактной субд с виртуальными методами, а от неё наследовать и переопределять процедуры с какойто небольшой спецификой, ну а если савсем всё по другому реализовывать заново.
Просто смысл в подходе, таким образом можно расширять поддерживаемые субд не пределывая "костыли", а просто добавляя реализации интерфейса.
...
Рейтинг: 0 / 0
30.10.2009, 14:57:25
    #36282507
Лосяш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
barrabasНу так и делать реализацию для некой абстрактной субд с виртуальными методами, а от неё наследовать и переопределять процедуры с какойто небольшой спецификой, ну а если савсем всё по другому реализовывать заново.
А еще лучше не изобретать велосипеды, а юзать Hibernate. Меняешь там диалект в зависимости от СУБД (одна строчка в конфиге), и забот не знаешь.
...
Рейтинг: 0 / 0
30.10.2009, 15:31:41
    #36282630
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
ЛосяшbarrabasНу так и делать реализацию для некой абстрактной субд с виртуальными методами, а от неё наследовать и переопределять процедуры с какойто небольшой спецификой, ну а если савсем всё по другому реализовывать заново.
А еще лучше не изобретать велосипеды, а юзать Hibernate. Меняешь там диалект в зависимости от СУБД (одна строчка в конфиге), и забот не знаешь.
а если логика в ХП на сервере.
А если диалект не поддерживается или багнутый (ждать фикса?)
От задачи зависит. если толстого клиента не нужно.
...
Рейтинг: 0 / 0
30.10.2009, 15:48:49
    #36282698
Лосяш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
barrabasЛосяшbarrabasНу так и делать реализацию для некой абстрактной субд с виртуальными методами, а от неё наследовать и переопределять процедуры с какойто небольшой спецификой, ну а если савсем всё по другому реализовывать заново.
А еще лучше не изобретать велосипеды, а юзать Hibernate. Меняешь там диалект в зависимости от СУБД (одна строчка в конфиге), и забот не знаешь.
а если логика в ХП на сервере.
А если диалект не поддерживается или багнутый (ждать фикса?)
От задачи зависит. если толстого клиента не нужно.
а что мешает вам использовать Hibernate в толстом клиенте?
...
Рейтинг: 0 / 0
30.10.2009, 15:59:39
    #36282718
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связанные переменные.
ЛосяшbarrabasЛосяшbarrabasНу так и делать реализацию для некой абстрактной субд с виртуальными методами, а от неё наследовать и переопределять процедуры с какойто небольшой спецификой, ну а если савсем всё по другому реализовывать заново.
А еще лучше не изобретать велосипеды, а юзать Hibernate. Меняешь там диалект в зависимости от СУБД (одна строчка в конфиге), и забот не знаешь.
а если логика в ХП на сервере.
А если диалект не поддерживается или багнутый (ждать фикса?)
От задачи зависит. если толстого клиента не нужно.
а что мешает вам использовать Hibernate в толстом клиенте?
то что как раз не нужен толстый клиент
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Связанные переменные. / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]