|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Вы не правы по всем трем пунктам. Но так как читать вы не умеете и в предметную область вникать не можете, в чем-то вас убеждать я не буду ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 15:28 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
superspy2019Read_committed readonly транзакция не вынуждает собирать версии, но потребует заблокировать нужные записи, иначе нельзя гарантировать консистентность, о чем абсолютно точно сказал H5N1. Причем Firebird (знаю только про 2.5) по умолчанию вопреки канонам использует вариант no_record_version, что приводит к двухфазной блокировке и дает исключение при попытке прочитать неконсистентный набор. честное слово, большей ахинеи про версионность в ФБ я нигде не читал. какие еще, ..., каноны? Где "по умолчанию использует no_rec_version"? Какая еще "двухфазная блокировка"? Вы не просто бредите, вы в другой вселенной находитесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 15:40 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
superspy2019Вы не правы по всем трем пунктам. Но так как читать вы не умеете и в предметную область вникать не можете, в чем-то вас убеждать я не буду гражданин, я вас уверяю - вы несёте ахинею, и при этом считаете её истиной. Это ВЫ читать не умеете, о чем и заявляете с непомерным пафосом. А чтобы не подвергнуться аналогичным обвинениям с вашей стороны, на всякий случай сообщу, что ibase.ru это мой сайт, и я и есть kdv, который написал тучу статей про версионность, сборку мусора, транзакции, и так далее. И если вы собираетесь на эту тему что-то еще брякнуть, то рекомендую ПЕРЕЧИТАТЬ эти самые статьи. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 15:43 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
kdv> гражданин, я вас уверяю - вы несёте ахинею, и при этом считаете её истиной. Вы, Шариков, чепуху говорите. И возмутительнее всего то, что говорите её безапелляционно и уверенно. (с) Не мешай человеку буйно ламерствовать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 15:51 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
Кстати о птичках: [quot superspy2019] Причем Firebird (знаю только про 2.5) по умолчанию вопреки канонам использует вариант no_record_version, что приводит к двухфазной блокировке и дает исключение при попытке прочитать неконсистентный набор. [quot] Умолчание для read_committed это no_rec_version + wait , которое (до некоторой степени) позволяет эмулировать каноническое поведение Оракула с его lost writes. Так что насчёт канонов ты тоже неправ. А для получения исключений неопытный (криворукий) разработчик должен явно установить read_committed + nowait, что уже совсем не умолчание. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 16:15 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
kdvчестное слово, большей ахинеи про версионность в ФБ я нигде не читал. какие еще, ..., каноны? Где "по умолчанию использует no_rec_version"? Какая еще "двухфазная блокировка"? Вы не просто бредите, вы в другой вселенной находитесь. kdvгражданин, я вас уверяю - вы несёте ахинею, и при этом считаете её истиной. Это ВЫ читать не умеете, о чем и заявляете с непомерным пафосом. А чтобы не подвергнуться аналогичным обвинениям с вашей стороны, на всякий случай сообщу, что ibase.ru это мой сайт, и я и есть kdv, который написал тучу статей про версионность, сборку мусора, транзакции, и так далее. И если вы собираетесь на эту тему что-то еще брякнуть, то рекомендую ПЕРЕЧИТАТЬ эти самые статьи. Добрый день. Если я в чем-то заблуждаюсь, то охотно выслушаю истину в последней инстанции. Я в общем-то, за этим на форум и обратился. И злиться совершенно не обязательно (если это, конечно, не ваш режим по-умолчанию), я к этому никого не принуждаю. Сведения про работу с транзакциями черпаю отсюда: http://www.ibase.ru/files/firebird/langref25rus/index.html#transaction. Цитирую: NO RECORD_VERSION (значение по умолчанию) является в некотором роде механизмом двухфазной блокировки. В этом случае транзакция не может прочитать любую запись, которая была изменена параллельной активной (неподтвержденной) транзакцией. Если указана стратегия разрешения блокировок NO WAIT, то будет немедленно выдано соответствующее исключение. Если вы пришли сказать что-то конструктивное, интересно будет услышать комментарий в контексте ваших сообщений - в чем конкретно я ошибся. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 16:50 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovА для получения исключений неопытный (криворукий) разработчик должен явно установить read_committed + nowait, что уже совсем не умолчание. Вы совершенно забыли о том, что в режиме No_Record_Version + Wait исключение вызывается, если параллельная транзакция не была отменена по истечению таймаута. Или не забыли, а явно пытаетесь вводить в заблуждение. Не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 16:55 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
Нужно что-то вроде этого? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
но профессионалы для передачи таких структур используют XML или JSON ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 17:02 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
vvvaitНужно что-то вроде этого? Насколько я понял, здесь дерево с тремя уровнями иерархии? Вот если у каждого узла иерархии будет не одно название, а десяток различных реквизитов, да еще и разных по составу на разных уровнях - тогда будет то самое. vvvaitно профессионалы для передачи таких структур используют XML или JSON Тоже про это думал, но как-то диковато выглядит... Одной строкой не передать, придется теги как-то размазывать, а на клиенте собирать и десериализовывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 17:10 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
vvvaitно профессионалы для передачи таких структур используют XML или JSON Если конечно эта фраза была написана в отношении формата получаемых от БД данных. Могу придумать только собирать схему вложенными for select и суспендить из хранимой процедуры. Очень интересно посмотреть на производительность в деле. Очень сомневаюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 17:20 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
для большего кол-ва полей расписывать не стану Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
в выгрузке в xml нет никаких сложностей, отчеты мы например в виде готового html сразу из базы получаем ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 17:21 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
с left join-ами - плохой путь. в какой-то момент можно уперется в ограничение на размер кортежа 64 кб, придётся всё к блобам приводить ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 17:24 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
хранимая процедура не нужна, можно использовать union all ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 17:25 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
вот пример запроса Код: sql 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. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 17:29 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
superspy2019Вы совершенно забыли о том, что в режиме No_Record_Version + Wait исключение вызывается, если параллельная транзакция не была отменена по истечению таймаута. Во-первых, таймаут по умолчанию бесконечен. Его опять же надо явно указывать в параметрах транзакции. Во-вторых, за длинные пишущие транзакции надо беседовать с разработчиком приложения отдельно. И по результатам этой беседы по шее получает либо тот, кто их сделал, либо тот, кто поставил вышеназванные параметры транзакции. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 17:46 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
H5N1superspy2019Не знаю, с чего вы взяли, что я пришел сюда что-то показывать. Я пришел за умным советом. А вы, батенька, даете ужасные советы и пытаетесь троллить, выводя меня на эмоции. ну ты нашел место, куда прийти за умным советом. лет 10 наблюдаю за веткой фб, в лучшем случае эти добрые люди советуют убиться о стену ну не всем и не всегда. Только когда упёртные попадаются. И вообще чего это ты в чужой огород зашёл? Слово Оракуль что-ли увидел? Так его вроде здесь не ругают. H5N1в запрос вникать лень, но на счет тразакции учти, фб не оракл. read committed там не гарантирует консистентного набора. 1 или 4 запроса вернут кашу с одинаковой вероятностью. судя по всему тебе нужна snapshot транзакция и 4 запроса в рамках снепшот транзакции Во-первых в 4.0 read committed уже выдаёт согласованный результат на уровне запроса Во-вторых ничего страшного в shapshot транзакции нет, если её не держать активной часами. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 17:46 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
superspy2019, у тебя есть следующие варианты: - взять готовую ORM (там всё за тебя уже сделано) и научиться работать с ней - один большой select запрос, результат которого надо самостоятельно распихивать по коллекциям сущностей (делать ORM самому) - много select запросов в snapshot в snapshot транзакции с распихиванием результатов в коллекции сущностей - собирать JSON/XML на сервере и передавать как BLOB Последнее кстати не так уж сложно сделать. Я в качестве эксперимента собирал UDR которая результат запроса закатывала в JSON ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 18:00 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
Симонов Денисsuperspy2019, у тебя есть следующие варианты: - взять готовую ORM (там всё за тебя уже сделано) и научиться работать с ней - один большой select запрос, результат которого надо самостоятельно распихивать по коллекциям сущностей (делать ORM самому) - много select запросов в snapshot в snapshot транзакции с распихиванием результатов в коллекции сущностей - собирать JSON/XML на сервере и передавать как BLOB Последнее кстати не так уж сложно сделать. Я в качестве эксперимента собирал UDR которая результат запроса закатывала в JSON Думаю вариант 4-ре select запроса (по одному на каждую таблицу) возможно что и получится ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 18:07 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
m7m, ну всякие ORM в большинстве случаев выбирает 2-ой, если только не используется отложенная загрузка свойств ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 18:10 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
vvvaitвот пример запроса Спасибо великое! Попробовал на примере for select в лоб составлять xml - крайне утомительно писать и еще более утомительно добиться потом валидации ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 18:16 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
Симонов Денисsuperspy2019, у тебя есть следующие варианты: - взять готовую ORM (там всё за тебя уже сделано) и научиться работать с ней - один большой select запрос, результат которого надо самостоятельно распихивать по коллекциям сущностей (делать ORM самому) - много select запросов в snapshot в snapshot транзакции с распихиванием результатов в коллекции сущностей - собирать JSON/XML на сервере и передавать как BLOB Последнее кстати не так уж сложно сделать. Я в качестве эксперимента собирал UDR которая результат запроса закатывала в JSON Да, спасибо, я склоняюсь больше к селектам, обернутым в снапшот. Оно хотя бы будет человечески выглядеть в результате ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 18:19 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
superspy2019, ну его этот xml, уж лучше json ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 18:26 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovsuperspy2019Вы совершенно забыли о том, что в режиме No_Record_Version + Wait исключение вызывается, если параллельная транзакция не была отменена по истечению таймаута. Во-первых, таймаут по умолчанию бесконечен. Его опять же надо явно указывать в параметрах транзакции. Во-вторых, за длинные пишущие транзакции надо беседовать с разработчиком приложения отдельно. И по результатам этой беседы по шее получает либо тот, кто их сделал, либо тот, кто поставил вышеназванные параметры транзакции. Уважаемый, фраза "если параллельная транзакция не была отменена по истечению таймаута" эквивалентна фразе "параллельная транзакция закоммитила изменения". У меня стойкое ощущение, что вы не воспринимаете параллельную работу многих потоков в БД как необходимость. При плотных update по таблице с какой-нибудь статистикой вы не сможете нормально выполнить ожидающий read_committed. У вас будет альтернатива в виде использования snapshot или более строгого уровня изоляции, либо более оптимального способа read_committed + rec_version - но он станет грубейшей ошибкой при чтении более 1 таблицы в одной транзакции, как вы это предлагали в ваших лучших традициях индусской практики ранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 18:27 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
superspy2019, он никогда такого не предлагал. Более того он обычно советует везде и всегда использовать snapshot, а про существование RC вообще забыть. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 18:40 |
|
Запрос иерархических структур в FB 2.5
|
|||
---|---|---|---|
#18+
Симонов Денис, json хуже, там запятые ставить нужно, хотя в новых версиях можно и в конце перечисления запятую ставить. XML лучше тем, что потом можно шаблоном крутить как угодно и агрегаты посчитать и группировки с сортировками на клиенте, чтобы сервер разгрузить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 18:53 |
|
|
start [/forum/topic.php?fid=40&msg=39794088&tid=1560762]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 155ms |
0 / 0 |