|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
Мной была опубликована статья , посвящённая сравнению SQLite и Interbase по некоторым аспектам. Просьба к экспертам по IB просмотреть её на наличие ошибок или неточностей, особенно раздел о проблеме с нестабильным курсором; если у Вас нет возможности сообщить о найденном на Хабре, то можно сделать это здесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 14:58 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
Калям, тут не так много спецов по IB, придёт kdv скажет подробней что там да как. Хотя по поводу CTE ты прав. По поводу стабильного курсора тоже, но вот только суть проблемы не разъяснил. Непонятно что же там за такое неожиданное поведение. Проблема с полнотекстовым поискам на таблице с 700 записями какая-то хрень, я конечно не пробовал как оно на мобильном устройстве работает, но не думаю что сильно медленно. Кстати в Firebird 3.0 есть CTE и стабильность курсора исправлена, правда официальной сборки под мобильные платформы пока нет (есть beta). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 15:22 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
Калямособенно раздел о проблеме с нестабильным курсором Учитывая в начале этого раздела фразы "автор даже не пробовал проделать то же извращение над SQLite", этот раздел можно вообще выкинуть. Хотя можно и оставить: он хорошо вписывается в общую идею статьи "SQLite УГ, но остальные ещё хуже". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 15:41 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
Калям, статья интересная. Спасибо! По поводу тормозов при поиске с CONTAINING, весьма странно, но поскольку не приведен ни запрос ни скрипты на таблицы (с индексами), участвующие в запросах - сложно что то советовать и комментировать. Было бы неплохо (на мой субъективный взгляд) также указать ингредиенты, что использованы для проекта: - версия Delphi, (версия компонентов доступа и прочих если вопросы по ним также желательны) - версия Interbase. Объем базы, ну и ТТХ железа, на котором работало приложения и получены высказанные субъективные ощущения о скорости работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 15:42 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ну я так понял автор слышал звон, да не знает где он. Типа на форуме от Yo услышал о стабильности курсора вот и повторил его слова, а в суть проблемы даже вникнуть не пытался. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 15:44 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
Filippov Dmitry, интересная спору нет, но вот пункт про стабильность курсора я бы на месте автора удалил, тем более что он не понимает суть проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 15:46 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
Симонов Денис, согласен про часть "Проблема нестабильного курсора". Вполне вероятно минимум мутно , но опять, нет структуры данных, примера данных ну и самого понятия, почему UPDATE должен быть именно ТАК написано, вывод: и комментировать сложно. Ясно одно, что были сложности, и на форумах был совет: "... добавить ORDER BY..." и эта таблетка помогла. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 15:56 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
Симонов ДенисКстати в Firebird 3.0 есть CTE и стабильность курсора исправлена, правда официальной сборки под мобильные платформы пока нет (есть beta).Где можно узнать подробности про эти сборки? Dimitry Sibiryakovэтот раздел можно вообще выкинуть. Хотя можно и оставить: он хорошо вписывается в общую идею статьи "SQLite УГ, но остальные ещё хуже".Я, честно говоря, теряюсь в догадках как можно было выйти на такую идею. Цель статьи сформулирована в самом её начале, и она довольно нейтральна - задачи составлять рейтинг или советовать к применению конкретную СУБД не было - читатель должен сам определиться в каждом своём проекте, основываясь на приведённых минусах и плюсах обеих. Симонов Денисну я так понял автор слышал звон, да не знает где он. Типа на форуме от Yo услышал о стабильности курсора вот и повторил его слова, а в суть проблемы даже вникнуть не пытался.Filippov DmitryЯсно одно, что были сложности, и на форумах был совет: "... добавить ORDER BY..." и эта таблетка помогла. :-)Автор лично столкнулся с этой проблемой, потратил на неё много времени и был бы крайне рад вернуться в прошлое, прочесть о ней где-то заранее и сэкономить почти неделю. Кстати, решение с ORDER BY получено как раз на этом форуме. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 17:02 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
КалямСамым горьким, даже ошарашивающим недостатком Interbase (особенно учитывая какой сегодня год) стала невозможность применять производные (derived) таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... стыд. :-) ну хоть бы пример получше сделал, или написал select ... from (select...). Вот за этот пример я бы по столу кулаком треснул, как минимум :-) Нафига джойн через derived tables, если можно написать нормальный join? Но да, в IB нет derived tables. Калямлибо применять ХП, изменив тип соединения Код: sql 1. 2. 3. 4.
это вообще из другой оперы. Смешались в кучу кони... КалямДругим серьёзным доводом за ХП являются требования фонового выполнения операции (без блокировки интерфейса) ээээ. Сама по себе процедура никакой "фоновости" не добавляет, по определению. Что запрос, что процедура - по барабану. Выполнение процедуры, кстати - это тоже запрос. В FireDAC, видимо (что и следует из описания), есть возможность разделить выполнение в треды для GUI и коннекта. Это специфика FireDAC, он такое умеет для всех поддерживаемых СУБД, в т.ч. и SQLite. Поэтому текст КалямВ случае SQLite сложность решения такой задачи много больше, т. к. требуется вынести все многочисленные запросы к БД и обработку их результатов в отдельный поток и самостоятельно реагировать на флаг отмены. совершенно не в кассу. Калямбезындексный перебор которых на iPhone 5c занимает, в худшем случае, 240 мс, что заметно при наборе, но ещё находится в зоне комфорта. хрен знает. на моем Xperia V (андроид) select count по 10к записей занимал 0 времени. КалямСамым горьким, даже ошарашивающим недостатком Interbase кстати, у SQLite есть куда больше "ошарашивающих недостатков". InterBase это все же сервер, целиком перенесенный на мобилу. Т.е. идентичный. А SQLite... просто движок доступа к данным. Для мобил и однопользовательских приложений на десктопах хорош, а дальше - увы и ах. Калям во-первых, FireDAC обязывает устанавливать новое соединение к БД, которое станут использовать компоненты, работающие в неосновном потоке замучили уже. НИКТО не обеспечивает параллельные операции в одном коннекте. КалямПереход на EUA, кроме всего прочего, даёт возможность исключить файл admin.ib из состава приложения я не уверен, может это как-то поменяли со времен IB 7.5, или это специфика IBLite/IBToGo, но исходно включение EUA не отменяет необходимости в admin.ib. что-то еще хотел прокомментировать, но или забыл или пока не стал. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 17:05 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
КалямЯ, честно говоря, теряюсь в догадках как можно было выйти на такую идею. Прочтением статьи. Которая написана так: "я взял что-то отличное от SQLite и там были следующие проблемы", а дальше идёт список проблем, которые вообще непонятно как соотносятся с разрабатываемым приложением или проистекают из криво (без учёта приложения) спроектированной БД. То есть читателя прямо наводят на мысль "а если бы использовался SQLite, проблем могло и не быть". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 17:09 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
КалямГде можно узнать подробности про эти сборки? как обычно почти ни где. В fbdevel об этом было. Я не уверен что стоит ссылку давать на предрелизную версию, хотя я нашёл . КалямАвтор лично столкнулся с этой проблемой, потратил на неё много времени и был бы крайне рад вернуться в прошлое, прочесть о ней где-то заранее и сэкономить почти неделю. Кстати, решение с ORDER BY получено как раз на этом форуме. Ну раз так пример нужно было нормальный давать а не FOR SELECT ... UPDATE чего-то там. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 17:20 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
статья из серии "я потыкал в него палочкой" зы: я видел в зоопарке живого слона. на оленя не похоже. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 17:25 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
kdv... стыд. :-) ну хоть бы пример получше сделал, или написал select ... from (select...).В чём стыд? Разве пример не отражает один из способов использования производной таблицы? Я специально приведу запрос, в котором они органично применяются именно в таком виде (правда написано для SQL Server, но сути это не меняет): Код: 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254.
kdvВот за этот пример я бы по столу кулаком треснул, как минимум :-) Нафига джойн через derived tables, если можно написать нормальный join?Я очень старался вникнуть в суть претензии, но так и не понял - что такое "нормальный join"? kdvэто вообще из другой оперы. Смешались в кучу кони...Снова я в замешательстве - разве приведена не эквивалентная замена производной таблице? Селективная ХП возвращает записи, необходимые для соединения с T_1 - где криминал? kdvя не уверен, может это как-то поменяли со времен IB 7.5, или это специфика IBLite/IBToGo, но исходно включение EUA не отменяет необходимости в admin.ib.Необязательность этого файла при EUA - факт, проверенный на мобильных устройствах. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 19:55 |
|
Статья об использовании Interbase в мобильном Delphi-приложении
|
|||
---|---|---|---|
#18+
КалямРазве пример не отражает один из способов использования производной таблицы? не отражает. в таком кастрированном примере я вижу, что разработчик не умеет писать обычный join. Калямчто такое "нормальный join"? стандартный join в соответствии с SQL-92. derived tables - это не джойны, не надо их в кучу мешать. Хотите пример, чего не поддерживает ИБ - напишите явно derived tables, только не с намеком на джойны. КалямСнова я в замешательстве - разве приведена не эквивалентная замена производной таблице? читатель спросит - а почему left join и бредовый 0=0? а потому что так происходит объединение таблицы и процедуры, в силу особенностей оптимизатора. Вы говорите А, но не говорите Б, и так по всей статье. КалямНеобязательность этого файла при EUA - факт, проверенный на мобильных устройствах. ну, слава богу. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 20:23 |
|
|
start [/forum/topic.php?fid=40&msg=39320466&tid=1561941]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 149ms |
0 / 0 |