|
|
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
maytonЯ прошу прощения. Но к чему нам сжатие? Ведь суть этой БД или инфо-системы в том чтобы оперативно извлекать статус по каждому паспорту. Согласен. Но обсуждение этого вопроса /на мой взгляд/ имеет смысл продолжить в части способов эффективного и компактного представления данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 10:42 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Владимир2012, компактного представления для репликации или поиска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 10:57 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Изопропилкомпактного представления для репликации или поиска?Общетеоретического. Без контекста обсуждения необходимости использования этого в базах данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 11:11 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Владимир2012Общетеоретического. для разных задач - разные алгоритмы иначе - обсуждение сферического коня в вакууме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 14:17 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Изопропилдля разных задач - разные алгоритмы иначе - обсуждение сферического коня в вакуумеРечь шла об конкретной задаче. И она в какой-то мере типична. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 14:23 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
__Avenger__maytonА ну ОК. Половинным делением. Хм... Довольно быстро работает, требуется порядка 10-15 чтений из файла (с буфферным чтением - физически происходит одно чтение в память блока 1МБ). Код: plaintext 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. Поясни, как ты используешь половиное деление если у тебя в текстовом файле существуют записи не выровненные на границу кратную 12 байтам (10 символов + запятая + 0x0A) Пример таких записей я нашёл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 19:24 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Лучше всего сжимается битовая карта: 26M - сжатая RARом битовая карта, 30M - сжатые RARом дельты, 85M - дельты без сжатия, 333M - битовая карта без сжатия, 1103M - оригинальный csv-файл. Неотлаженный Некрасивый Недоделанный Исходник для справки Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 21:24 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Dima TЭто слишком примитивно. Хотя и этот подход можно использовать, но только добавить хэши файлов. Имя файла обновления: XXXX_<MD5old>_<MD5new>.upd, где XXXX номер обновления, MD5old хэш исходного файла, MD5new хэш после обновления. На клиенте считаешь MD5 текущего состояния, запрашиваешь файл *_<MD5>_*.upd накатываешь, проверяешь что MD5curr = MD5new, если совпало - фиксируешь изменения. Дальше по кругу. Хорошая идея, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 23:23 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
maytonПоясни, как ты используешь половиное деление если у тебя в текстовом файле существуют записи не выровненные на границу кратную 12 байтам (10 символов + запятая + 0x0A) Пример таких записей я нашёл Прочитай сообщение 18742992 . Все номера паспортов выровнены на границу 4 байта. Серии хранятся в массиве серий от [0..10000]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 23:26 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovЛучше всего сжимается битовая карта: 26M - сжатая RARом битовая карта, 30M - сжатые RARом дельты, 85M - дельты без сжатия, 333M - битовая карта без сжатия, 1103M - оригинальный csv-файл. Мощно, какое-то слишком сложное кодирование исходящего буффера. А за сколько у Вас формируется файл с битовой картой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 23:41 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
__Avenger__Прочитай сообщение 18742992 . Все номера паспортов выровнены на границу 4 байта. Серии хранятся в массиве серий от [0..10000]. должно быть и есть - это разные вещи зачем ты нам файл с мусором выдал? номер серии из двух знаков, нецифровые символы в номере, год печати бланка из будущего, советские номера серий Неужели на основании таких данных можно делать адекватные данные о валидности паспорта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 00:27 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
__Avenger__Aleksandr SharahovЛучше всего сжимается битовая карта: 26M - сжатая RARом битовая карта, 30M - сжатые RARом дельты, 85M - дельты без сжатия, 333M - битовая карта без сжатия, 1103M - оригинальный csv-файл. Мощно, какое-то слишком сложное кодирование исходящего буффера. А за сколько у Вас формируется файл с битовой картой? Последовательно по 3 раза вызов каждой процедуры: List loaded OK 45895ms List loaded OK 44882ms List loaded OK 44772ms Map loaded OK 6397ms Map loaded OK 421ms Map loaded OK 421ms Packet loaded OK 2512ms Packet loaded OK 2496ms Packet loaded OK 2496ms Map saved OK 343ms Map saved OK 359ms Map saved OK 343ms Packet saved OK 2293ms Packet saved OK 2293ms Packet saved OK 2294ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 00:35 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Изопропил__Avenger__Прочитай сообщение 18742992 . Все номера паспортов выровнены на границу 4 байта. Серии хранятся в массиве серий от [0..10000]. должно быть и есть - это разные вещи зачем ты нам файл с мусором выдал? номер серии из двух знаков, нецифровые символы в номере, год печати бланка из будущего, советские номера серий Неужели на основании таких данных можно делать адекватные данные о валидности паспорта? Этот вопрос не ко мне, а сюда . Сейчас многие обязаны по закону проверять паспорт, согласно перечня ФСФМ или на сайте. Такие у нас законы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 00:40 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
__Avenger__Мощно, какое-то слишком сложное кодирование исходящего буффера. Там все элементарно: допустим S это номер первого байта биткарты в файле, N номер паспорта. Дальше читаем из файла байт (S+N/8) работаем с битом N % 8 чтобы не делать деление и получения остатка (это тяжелые операции) можно их заменить: деление на 8 - это битовый сдвиг вправо на 3 бита (>> 3) остаток от деления на 8 - это получение последних трех бит (&7) Смотря на чем пишешь, на С/С++ можно не менять, компилятор за тебя поменяет. Для работы с нужным битом: пусть К номер бита (0-7). Получаем маску M = 1 << K. т.е. битовый сдвиг влево 1 на К разрядов. Математически M = 2^K. Например: при К = 4, M будет 16 или в двоичной 00010000 B - текущее содержимое байта. Проверка текущего значения бита: (B & M) != 0 (true - установлен) Установка бита: B = B | M Сброс бита: B = B & (~M) &, |, ~ побитовые операции И, ИЛИ, НЕ При генерации с нуля, для ускорения, лучше сначала все посчитать в памяти, затем результат сбросить на диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 09:57 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
__Avenger__Этот вопрос не ко мне, а сюда . Сейчас многие обязаны по закону проверять паспорт, согласно перечня ФСФМ или на сайте. Такие у нас законы. ИМХУ вопрос к тебе, как изучившему предметную область. Например есть там запись 01,591132. Можно трактовать по разному: 0001,591132 и 0100,591132. Очевидно что нужен один из них, но какой? ФСФМ что-нибудь разъясняет по этому поводу? Есть какие-то рекомендации как это трактовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 10:08 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Dima TФСФМ что-нибудь разъясняет по этому поводу? http://services.fms.gov.ru/info-service.htm?sid=2000 Данный сервис является информационным, предоставляемая информация не является юридически значимой. no comments ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 10:13 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Dima T__Avenger__Этот вопрос не ко мне, а сюда . Сейчас многие обязаны по закону проверять паспорт, согласно перечня ФСФМ или на сайте. Такие у нас законы. ИМХУ вопрос к тебе, как изучившему предметную область. Например есть там запись 01,591132. Можно трактовать по разному: 0001,591132 и 0100,591132. Очевидно что нужен один из них, но какой? ФСФМ что-нибудь разъясняет по этому поводу? Есть какие-то рекомендации как это трактовать? Трактовать как ошибочное значение, в чем легко убедиться, если отправить запрос в ФМС на этот URL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 10:17 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
мусор на входе - мусор на выходе а какие собственно законы требуют применения этого говносервиса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 10:23 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovТрактовать как ошибочное значение, в чем легко убедиться, если отправить запрос в ФМС на этот URL. Попробовал там вбить. 01 не говорит неверно ввели, 0001 и 0100 говорит отсутствует. Получается надо просто игнорить все серии что не подходят под маску XXXX где X цифра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 10:47 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Опечатка 01 не говорит неверно ввели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 10:48 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Изопропил, Ну например, 115-фз и 499-п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 12:12 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
Белка123Изопропил, Ну например, 115-фз и 499-п. как это совместить с "Данный сервис является информационным, предоставляемая информация не является юридически значимой" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 13:16 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
__Avenger__maytonПоясни, как ты используешь половиное деление если у тебя в текстовом файле существуют записи не выровненные на границу кратную 12 байтам (10 символов + запятая + 0x0A) Пример таких записей я нашёл Прочитай сообщение 18742992 . Все номера паспортов выровнены на границу 4 байта. Серии хранятся в массиве серий от [0..10000]. Спасибо. А сколько времени (мс)у тебя занимает поиск 1 паспорта по этому файлу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 14:36 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
ИзопропилБелка123Изопропил, Ну например, 115-фз и 499-п. как это совместить с "Данный сервис является информационным, предоставляемая информация не является юридически значимой" ЦБ это не волнует. Сказано проверять и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 15:06 |
|
||
|
Два число в одно и обратно
|
|||
|---|---|---|---|
|
#18+
maytonСпасибо. А сколько времени (мс)у тебя занимает поиск 1 паспорта по этому файлу? ИМХУ если правильно бинарный поиск реализовать будет быстрее дерева, медленнее биткарты. По сути это 10-20 чтений с диска по 4 байта. Причем Последние 10 чтений из 1-2 соседних кластеров (если кластер 4 Кб). Т.е. время поиска не больше времени рандомного чтения 10 кластеров. Еще одно интересное наблюдение: 50% номеров содержатся в 150 сериях Код: sql 1. СерияКол-во номеров800457791180035532622503548911800554026432045320284045314084500520041503514190650450714782035069382003491027650348231265024814724004481202500347996557034711301034680719204466153400546248745064598125203458630450745700475034567293054557992203455639400245433432004526509203451882530345183345014498244505448794180344397492054411654003440890450243669645034344284504430080360442784160044229466505422687304421592630342116375004192772202417013460140952540040748746064066014508406575500440406160024004249201399667460539803030339506770339503146033808834023784514604374489800236763845093673613003643623013631394602359497800135799046073558146003355543410335491436023547616005346637760034107410434088657043371893202336596180433186945983315186304320352650030014445102956447504295450750229505118012932902804287123500028443733042834807003281410410227883060012729848042686894600265620220426345314042605129402258314460825697736012525801012517426704251710200424913325042470857042464231504244173920724388120012428577002241843170423965015022319469403228812409922815732012278233062278062501223833501220689400022062511042205612200217349110221146280121091028022096391402205489360520369180220257082022018591702200930970420063156021993744202199278730419290253001927624597190491690218958278041881565402185916680218514952011848833206183673370218294481031816509802180274400717967867021790595701177965100217476371041747103302173899870217385660081728217102172335520516992856031695391800169216701166013 В принципе объяснимо: сроки действия истекли и люди паспорт меняют. ИМХУ надо смешанный формат хранения: биткарта на одну серию 125000 байт или 31250 номеров по 4 байта или 41667 по 3 байта. Т.е. там где номеров больше 31250/41667 меньше места займет биткарта. При 4 байтовом номере экономия 263 Мб, т.е. файл будет ~104 Мб При 3 байтовом номере экономия 178,5 Мб, т.е. файл будет ~97 Мб Некогда писать, на неделе время будет, затестю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 16:23 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39159422&tid=1340797]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 470ms |

| 0 / 0 |
