|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
Приветствую, уважаемые. Имеется тхт. файл с около 40кк строк. Строки из 20-30 латинских знаков без пробелов. Хочу сделать поиск по наличию строки. Простым запросом. Сейчас текстовый файл переведен в базу sqlite. не принципиальго но посчитал простым решением. Совсем пионер в теме. Прошу помощи и совета. Вот форма поиска: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Вот скрипт поиска: Код: php 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.
Заранее весьма благодарен за помощь и рекомендации. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2021, 21:57 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
bonnie Хочу сделать поиск по наличию строки. Простым запросом. ... Код: php 1.
Это поиск подстроки. Поиск строки так Код: sql 1.
В таком виде можно ускорить индексом по column1 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2021, 08:50 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
спасибо, тоже искал решение на эту задачку ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 15:18 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
А зачем в SQLite-то? Можно прямо в тексте каким-нибудь grep. Он и под Линукс и под Виндовс имеется. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 07:53 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
ShSerge А зачем в SQLite-то? Можно прямо в тексте каким-нибудь grep. Он и под Линукс и под Виндовс имеется. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 10:58 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
kealon(Ruslan) ShSerge А зачем в SQLite-то? Можно прямо в тексте каким-нибудь grep. Он и под Линукс и под Виндовс имеется. Какой индекс? Кто и когда индексировать и реиндексировать будет? Я думаю, что греп на таком размере (явно преувеличенном) и так быстро сработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 11:13 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
ShSerge kealon(Ruslan) пропущено... только если индекс задействовать Какой индекс? Кто и когда индексировать и реиндексировать будет? Я думаю, что греп на таком размере (явно преувеличенном) и так быстро сработает. Если задача одноразовая - то можно и грепом грепнуть. Если надо искать в данных на регулярной основе - то лучше залить в любую бесплатную базячку или nosql систему какая есть под рукой. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 11:28 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
mayton, 40000000*30=ниачем. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:09 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
П.С. Это 40 миллионов (байтов) умножить на тридцать. Это не гигабайты какие-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:15 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
Теперь представим себе БД. Во-первых, заливка, во-вторых индексация. Без индексации - тот же scan, что и грепом. Ну и? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:33 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
40 млн строк каждая по 30 символов. Это 1 200 000 000 символов. Ну не знаю. 1.2 Гига почти. Ну не знаю не знаю. Был у нас топик несколько лет назад. С унификацией. Там как раз тестовые данные у нас были в 1.2 billion. Я даже название файла запомнил. Вобщем линейный поиск (а так работает греп) будет в среднем как время поиска по половине этой коллекции. Даже если это все в оперативке - лежит все равно надо подождать. Ништяк говоришь? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:51 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
Да, ништяк. Просто потому, что спроектировать и создать базу, загрузить в неё сорок миллионов строк, построить индексы и запросы ... Да за это время эту базу можно будет про-grep-ать раз цать. А то и сот. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:55 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, так явно же ему ни раз надо будет поиск делать, иначе бы прогрепал и всё, а не на форуме вопрос задавал ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:58 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
Тогда вариант Димы - самый быстрый. Загрузить в sqlite. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 13:11 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
mayton Тогда вариант Димы - самый быстрый. Загрузить в sqlite. А если не один раз, то что, опять загружать? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:03 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
ShSerge mayton Тогда вариант Димы - самый быстрый. Загрузить в sqlite. А если не один раз, то что, опять загружать? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:18 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
kealon(Ruslan) ShSerge пропущено... А если не один раз, то что, опять загружать? Возможно он прав. sqlite - это всё таки не PG и не оракл. Ему недостаточно сделать fopen(...) сегмента данных. Ему надо реально прогрузить всю ботву в memory. Вы хоть раз заглядывали в sqlite-дамп? Это-же не блочный сегмент данных. Это чортов CSV. Хотя... я смотрел туда лет 5 назад. Как щас не знаю. Но вряд-ли что-то сильно изменилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:39 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
mayton kealon(Ruslan) пропущено... зачем опять загружать? загрузил и пользуйся Возможно он прав. sqlite - это всё таки не PG и не оракл. Ему недостаточно сделать fopen(...) сегмента данных. Ему надо реально прогрузить всю ботву в memory. В sqlite те же принципы что во взрослых СУБД: данные страницами хранятся, нужные страницы закачиваются в кэш и т.д. и т.п. Так что однократно залить, проиндексировать и при поиске по индексу будут читаться только нужные страницы. Залить в sqlite ТС сам решил. Зачем? Может ему так лучше, боюсь ответа мы не узнаем, он тут больше не появлялся. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:49 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
Dima T mayton пропущено... Возможно он прав. sqlite - это всё таки не PG и не оракл. Ему недостаточно сделать fopen(...) сегмента данных. Ему надо реально прогрузить всю ботву в memory. В sqlite те же принципы что во взрослых СУБД: данные страницами хранятся, нужные страницы закачиваются в кэш и т.д. и т.п. Так что однократно залить, проиндексировать и при поиске по индексу будут читаться только нужные страницы. Залить в sqlite ТС сам решил. Зачем? Может ему так лучше, боюсь ответа мы не узнаем, он тут больше не появлялся. Он же не в хибернейт свой сервак опускает? Ему нужен shutdown периодически. И после рестарта - поднятие БД (быстрое в том же виде как и было). Не импорт а именно монтирование дата-файлов. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:52 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
mayton Он же не в хибернейт свой сервак опускает? Ему нужен shutdown периодически. И после рестарта - поднятие БД (быстрое в том же виде как и было). Не импорт а именно монтирование дата-файлов. Он готовый файл с БД использует, это по коду видно bonnie Вот скрипт поиска: Код: php 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:57 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
Насколько я помню, в SQLite очень долго происходят операции изменения данных. Чтение, да, быстрое. Несколько убыстрить его получится грамотным управлением транзакций. Но нафига это все, если за несколько миллисекунд можно регулярным выражением в грепе, или ещё в чем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:59 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
Хорошо. А сколько секунд или милисекунд у него занимает эта операция? Код: php 1. 2.
Тоесть я хочу понять метрику "готовность системы выдать 1-й байт выборки" (Time to first byte (TTFB)) для двигателя sqlite в соотношении к Postgresql к примеру. Разумеется я буду жесток и буду требовать время холодного старта тоже включить в это измерение. Мне это интересно потому что это тоже юзейс данного топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 16:03 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
По моему опыту, на однострочных INSERT/SELECT SQLLite примерно в 7-10 раз быстрее PostgreSQL Просто потому, что не нужно общение через TCP/IP. Время "холодного cтарта" сервиса PostreSQL или Oracle Entrprise Edition, тем более и рядом с SQLLite не стояло ))) p.s. железо - бесплатный и medium (4 Gb ram) инстанс Amazon EC2 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 16:17 |
|
Помогите с поиском по 40млн строк в один столбец.
|
|||
---|---|---|---|
#18+
ShSerge ...Насколько я помню, в SQLite очень долго происходят операции изменения данных... Я помню совершенно обратное. Мне нужно было создать простейшую базу из 3-4-х полей, где-то под 50 лямов строк, но были частые INSERT/SELECT'ы отдельных позиций. Переход с PostgreSQL на SQLLite ускорил минимум раз в 7-10, а то и больше. Приложение однопоток, парсер сайта с расписаниями авиа-перелетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 16:20 |
|
|
start [/forum/topic.php?fid=16&msg=40077540&tid=1339638]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 141ms |
0 / 0 |