powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите с поиском по 40млн строк в один столбец.
79 сообщений из 79, показаны все 4 страниц
Помогите с поиском по 40млн строк в один столбец.
    #40077540
bonnie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую, уважаемые.
Имеется тхт. файл с около 40кк строк. Строки из 20-30 латинских знаков без пробелов.
Хочу сделать поиск по наличию строки. Простым запросом.
Сейчас текстовый файл переведен в базу sqlite. не принципиальго но посчитал простым решением.
Совсем пионер в теме.
Прошу помощи и совета.

Вот форма поиска:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
 <body>
  Искать сейчас!
<form name="f1" method="post" action="search.php">
<input type="search" name="search_q"/></br>
</br>
<input type="submit" value="Поиск"/></br>
</form>
 
 </body>
</html>


Вот скрипт поиска:

Код: 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.
<?php
define('DB_FILENAME', '.\bazza.sqlite');
if( !file_exists(@DB_FILENAME) ) die('File '. DB_FILENAME .' not exists.');
else {
  try {
    $db = new PDO('sqlite:'. @DB_FILENAME);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  } catch(PDOException $e) {
    die($e->getMessage());
  }
}
 
 
$search_q=$_POST['search_q'];
$search_q = trim($search_q);
$search_q = strip_tags($search_q);
 
$res = $db->query("SELECT column1 FROM table1 WHERE column1 LIKE '%$search_q%'");
 
if ($res === true) {
echo 'OK!';
}
else { 
    echo 'NO!';
    } 
 
 
?>




Заранее весьма благодарен за помощь и рекомендации.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40077567
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bonnie
Хочу сделать поиск по наличию строки. Простым запросом.
...
Код: php
1.
$res = $db->query("SELECT column1 FROM table1 WHERE column1 LIKE '%$search_q%'");



Это поиск подстроки. Поиск строки так
Код: sql
1.
... WHERE column1 = '$search_q'


В таком виде можно ускорить индексом по column1
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091527
alex145
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, тоже искал решение на эту задачку
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091660
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем в SQLite-то? Можно прямо в тексте каким-нибудь grep. Он и под Линукс и под Виндовс имеется.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091710
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
А зачем в SQLite-то? Можно прямо в тексте каким-нибудь grep. Он и под Линукс и под Виндовс имеется.
только если индекс задействовать
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091721
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
ShSerge
А зачем в SQLite-то? Можно прямо в тексте каким-нибудь grep. Он и под Линукс и под Виндовс имеется.
только если индекс задействовать

Какой индекс? Кто и когда индексировать и реиндексировать будет? Я думаю, что греп на таком размере (явно преувеличенном) и так быстро сработает.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091735
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
kealon(Ruslan)
пропущено...
только если индекс задействовать

Какой индекс? Кто и когда индексировать и реиндексировать будет? Я думаю, что греп на таком размере (явно преувеличенном) и так быстро сработает.

Если задача одноразовая - то можно и грепом грепнуть.

Если надо искать в данных на регулярной основе - то лучше залить в любую бесплатную базячку
или nosql систему какая есть под рукой.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091779
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

40000000*30=ниачем.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091783
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П.С. Это 40 миллионов (байтов) умножить на тридцать. Это не гигабайты какие-то.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091796
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь представим себе БД.
Во-первых, заливка, во-вторых индексация. Без индексации - тот же scan, что и грепом. Ну и?
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091802
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
40 млн строк каждая по 30 символов. Это 1 200 000 000 символов.

Ну не знаю. 1.2 Гига почти. Ну не знаю не знаю. Был у нас топик несколько лет назад.
С унификацией. Там как раз тестовые данные у нас были в 1.2 billion. Я даже название
файла запомнил.

Вобщем линейный поиск (а так работает греп) будет в среднем как время поиска по половине
этой коллекции. Даже если это все в оперативке - лежит все равно надо подождать.

Ништяк говоришь?
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091807
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, ништяк.
Просто потому, что спроектировать и создать базу, загрузить в неё сорок миллионов строк, построить индексы и запросы ...
Да за это время эту базу можно будет про-grep-ать раз цать. А то и сот.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091808
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

так явно же ему ни раз надо будет поиск делать, иначе бы прогрепал и всё, а не на форуме вопрос задавал
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091812
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда вариант Димы - самый быстрый. Загрузить в sqlite.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091864
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Тогда вариант Димы - самый быстрый. Загрузить в sqlite.

А если не один раз, то что, опять загружать?
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091870
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
mayton
Тогда вариант Димы - самый быстрый. Загрузить в sqlite.

А если не один раз, то что, опять загружать?
зачем опять загружать? загрузил и пользуйся
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091886
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
ShSerge
пропущено...

А если не один раз, то что, опять загружать?
зачем опять загружать? загрузил и пользуйся

Возможно он прав. sqlite - это всё таки не PG и не оракл. Ему недостаточно сделать fopen(...)
сегмента данных. Ему надо реально прогрузить всю ботву в memory.

Вы хоть раз заглядывали в sqlite-дамп? Это-же не блочный сегмент данных. Это чортов CSV.
Хотя... я смотрел туда лет 5 назад. Как щас не знаю. Но вряд-ли что-то сильно
изменилось.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091895
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
kealon(Ruslan)
пропущено...
зачем опять загружать? загрузил и пользуйся

Возможно он прав. sqlite - это всё таки не PG и не оракл. Ему недостаточно сделать fopen(...)
сегмента данных. Ему надо реально прогрузить всю ботву в memory.

В sqlite те же принципы что во взрослых СУБД: данные страницами хранятся, нужные страницы закачиваются в кэш и т.д. и т.п. Так что однократно залить, проиндексировать и при поиске по индексу будут читаться только нужные страницы.

Залить в sqlite ТС сам решил. Зачем? Может ему так лучше, боюсь ответа мы не узнаем, он тут больше не появлялся.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091897
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
mayton
пропущено...

Возможно он прав. sqlite - это всё таки не PG и не оракл. Ему недостаточно сделать fopen(...)
сегмента данных. Ему надо реально прогрузить всю ботву в memory.

В sqlite те же принципы что во взрослых СУБД: данные страницами хранятся, нужные страницы закачиваются в кэш и т.д. и т.п. Так что однократно залить, проиндексировать и при поиске по индексу будут читаться только нужные страницы.

Залить в sqlite ТС сам решил. Зачем? Может ему так лучше, боюсь ответа мы не узнаем, он тут больше не появлялся.

Он же не в хибернейт свой сервак опускает? Ему нужен shutdown периодически. И после рестарта
- поднятие БД (быстрое в том же виде как и было). Не импорт а именно монтирование
дата-файлов.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091900
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Он же не в хибернейт свой сервак опускает? Ему нужен shutdown периодически. И после рестарта
- поднятие БД (быстрое в том же виде как и было). Не импорт а именно монтирование
дата-файлов.

Он готовый файл с БД использует, это по коду видно
bonnie
Вот скрипт поиска:
Код: php
1.
2.
3.
4.
<?php
define('DB_FILENAME', '.\bazza.sqlite');
if( !file_exists(@DB_FILENAME) ) die('File '. DB_FILENAME .' not exists.');
...

...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091902
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню, в SQLite очень долго происходят операции изменения данных. Чтение, да, быстрое. Несколько убыстрить его получится грамотным управлением транзакций. Но нафига это все, если за несколько миллисекунд можно регулярным выражением в грепе, или ещё в чем-то.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091904
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо. А сколько секунд или милисекунд у него занимает эта операция?

Код: php
1.
2.
$db = new PDO('sqlite:'. @DB_FILENAME);
$res = $db->query("SELECT * FROM table1 LIMIT 1");



Тоесть я хочу понять метрику "готовность системы выдать 1-й байт выборки" (Time to first byte (TTFB)) для двигателя sqlite
в соотношении к Postgresql к примеру. Разумеется я буду жесток и буду требовать время холодного старта тоже включить
в это измерение.

Мне это интересно потому что это тоже юзейс данного топика.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091908
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему опыту, на однострочных INSERT/SELECT SQLLite примерно в 7-10 раз быстрее PostgreSQL

Просто потому, что не нужно общение через TCP/IP.

Время "холодного cтарта" сервиса PostreSQL или Oracle Entrprise Edition, тем более и рядом с SQLLite не стояло )))

p.s. железо - бесплатный и medium (4 Gb ram) инстанс Amazon EC2
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091909
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
...Насколько я помню, в SQLite очень долго происходят операции изменения данных...

Я помню совершенно обратное.

Мне нужно было создать простейшую базу из 3-4-х полей, где-то под 50 лямов строк, но были частые INSERT/SELECT'ы отдельных позиций. Переход с PostgreSQL на SQLLite ускорил минимум раз в 7-10, а то и больше. Приложение однопоток, парсер сайта с расписаниями авиа-перелетов.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091915
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вечерком проведу эксперимент на 1 лярде строк. По холодному старту.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091916
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э-э-э ...
Есть какие-то сомнения, что на "холодном старте" grep обскачет sqlite?
Или будет сравнение удавки с бечевой (sqlite vs PG vs MariaDB vs Kafka vs ...)?
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091920
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Я разве говорил про постгрес?
Дело в том, что в SQLite, по умолчанию каждый инсерт проходит в отдельной транзакции. Т.е., проверяется целостность и все такое, а так же расширение базы, по мере надобности.. Причем, это каждый раз. При каждом инсерте. Это, ясен пень, можно побороть. Но поиск все равно происходит сканом. Если не проиндексировано имхо. А индексация - это сортировка и хеширование, что тоже время занимает.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091922
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне греп не интересен. Просто хочу узнать обстановку с современным sqlite.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091926
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиск в базе с индексами (не по like, а по =) - что при "холодном" старте, что при "горячем", все равно быстрее, чем в текстовом файле

А индексация - это сортировка и хеширование, что тоже время занимает
Так один раз.
Создали базу. Залили данные. Пользуемся

В контексте дискуссии, уже не очень понятен термин "холодный старт". Так можно договориться, что это время от начала форматирования винчестера, до показа страницы, включая время вбивания 40 млн. строк с клавиатуры.

В 98% случаев при HTTP никакого холодного старта не будет, стандартный CGI уже с 1995 года не модно AFAIK
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091927
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мне греп не интересен. Просто хочу узнать обстановку с современным sqlite.

Я не уверен, что он радикально изменился с тех пор, когда про него Чингиз написал. Но у меня имеются (уже завершенных) несколько вэб-проектов на нем. Офигенно нравится. Для вэба - самое то.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091928
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мне греп не интересен. Просто хочу узнать обстановку с современным sqlite.

С современным не знаю. Лет 5 назад - работало. И быстро работало (на моем паттерне insert'ов, select'ов минимум в 7-10 раз быстрее PostgreSQL, все запросы однострочные, экономия времени на коммуникации между приложением и ядром базы /один процесс/)
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091932
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Поиск в базе с индексами (не по like, а по =) - что при "холодном" старте, что при "горячем", все равно быстрее, чем в текстовом файле

В первом исходнике у автора видна наивная попытка делать поиск по вхождению строки
Код: sql
1.
LIKE '%$search_q%'


Если он не послушается Диминого совета и все-таки оставит like (захочет
искать

Код: sql
1.
*Гурбангулы*берды-керды*амедов*



), то ему тогда более универсальным
решением будет вот такой подход как здесь

https://www.sqlite.org/fts5.html

Коробочный текстовый поиск. Запрос надо будет подпилить зато явное преимущество индекса.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091936
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, вспомнил. Пять лет назад лайк по русским буквам не работал. Исправили?
Я читал инструкцию, как его перекомпилить.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091938
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
А, вспомнил. Пять лет назад лайк по русским буквам не работал. Исправили?
Я читал инструкцию, как его перекомпилить.

Не верю ( C )

Upper, lower - могут работать/не работать. Но как может не работать Like? Если 8-битная кодировка, откуда он знает (какая ему разница), русские буквы или нет?

У Вас проблемы и решения какие-то странные. То дефолтный autocommit не отключили, то инструкцию прочитать надо.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091948
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Чтож вы так зло. Автокоммит? Интересно. И что, автор его отключил? А насчёт русских букв - известная история, можете погуглить.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091949
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да с ловер и уппер проблема.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091958
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У них (sqlite) странный багтрекер https://www.sqlite.org/src/wiki?name=Bug Reports

Ничего толком найти нельзя. Пробовал по слову russian искать - ничего нет. Или инцедентов
не было или они просто отдали эту часть функционала куда-то третьим конторам.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091964
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Проще проверить. Щас докурю.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40091983
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил.
Код: sql
1.
2.
3.
Select idCompany, CompanyShortName
From dicCompany
Where Upper(CompanyShortName) Like upper('%рога%')


Это было - "Рога и копыта".
Так не работает, а если написать Рога, то работает.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092020
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Хорошо. А сколько секунд или милисекунд у него занимает эта операция?

Код: php
1.
2.
$db = new PDO('sqlite:'. @DB_FILENAME);
$res = $db->query("SELECT * FROM table1 LIMIT 1");



Тоесть я хочу понять метрику "готовность системы выдать 1-й байт выборки" (Time to first byte (TTFB)) для двигателя sqlite
в соотношении к Postgresql к примеру. Разумеется я буду жесток и буду требовать время холодного старта тоже включить
в это измерение.

Мне это интересно потому что это тоже юзейс данного топика.

Какой-то неадекватный запрос. По-хорошему должна быть ошибка синтаксиса т.к. нет ORDER BY

Сразу скажу что sqlite как СУБД для сайта это очень плохая идея, он не для этого создан. С полноценной СУБД нет смысла сравнивать.

Тут топик ушел непонятно в какую сторону, ТС пропал, поэтому немножко добавлю условий как я понял первый пост: есть некий текстовый файл в котором надо найти нужные записи. ТС решил залить его в таблицу БД, надеясь что будет работать быстрее. Я предположил что файл только для чтения, например какой-то большой справочник, который редко обновляется. Т.е. задача не требует функционала полноценной СУБД.

Как уже написал sqlite для другого, он может разделять кэш между потоками одного процесса, но насколько знаю скрипты PHP запускается разными процессами, поэтому вся прогретость будет сводиться к тому что нужные страницы окажутся в дисковом кэше, т.е. тут никакой разницы с чтением напрямую из файла. Если запрос приводит к скану таблицы (... like '%...') то не будет никакого выигрыша по сравнению с чтением файла. НО если возможно задействовать индекс, то ускорение будет за счет чтения только нужных страниц.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092045
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Какой-то неадекватный запрос. По-хорошему должна быть ошибка синтаксиса т.к. нет ORDER BY
С каких это пор недетерменированный запрос должен генерировать синтаксическую ошибку???
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092049
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Dima T
Какой-то неадекватный запрос. По-хорошему должна быть ошибка синтаксиса т.к. нет ORDER BY
С каких это пор недетерменированный запрос должен генерировать синтаксическую ошибку???

Я не сказал что должен, я сказал "По-хорошему должна быть ошибка". Теория РСУБД гласит что все записи равноправны и не имеют порядка, поэтому требование получить первую бессмысленно без указания порядка сортировки, это требование дать одну любую из имеющихся, что полезно разве что для написания ПГСЧ.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092091
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
поэтому требование получить первую бессмысленно без указания порядка сортировки, это требование дать одну любую из имеющихся, что полезно разве что для написания ПГСЧ.
В вашем посыле содержится логическая ошибка.
Синтаксис, на самом деле, не определяет семантику. Более того - не имеет права её определять.
Это правила грамматики, но только от автора зависит будет ли иметь смысл грамматически корректное приложение.
Это мы ещё даже не погружаемся в пучины какой-нибудь гносеологии и не начали ломать копья о смысле термина "бессмысленный"
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092096
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, что сортировка по умолчанию - это сортировка по первичному ключу.
А так да, дима_т вобщем правильно говорит.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092108
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
mayton
Хорошо. А сколько секунд или милисекунд у него занимает эта операция?

Код: php
1.
2.
$db = new PDO('sqlite:'. @DB_FILENAME);
$res = $db->query("SELECT * FROM table1 LIMIT 1");



Тоесть я хочу понять метрику "готовность системы выдать 1-й байт выборки" (Time to first byte (TTFB)) для двигателя sqlite
в соотношении к Postgresql к примеру. Разумеется я буду жесток и буду требовать время холодного старта тоже включить
в это измерение.

Мне это интересно потому что это тоже юзейс данного топика.

Какой-то неадекватный запрос. По-хорошему должна быть ошибка синтаксиса т.к. нет ORDER BY

Тут - разные аспекты.

Есть реляционная алгебра. И есть конкретная реализация SQL. Сам по себе SQL и современные DBMS
к примеру вобщем-то не требуют существования PK. Многие создают лог-таблицы без PK но
с сегментацией по времени. По дням или неделям или месяцам. Такой подход базируется
на предположении что лог нужен но на всякий пожарный случай. И доступ к нему будет редкий.
Можно и сортирнуть если что за последний день.

Есть процессы ETL которые тоже не соблюдают ордеринг строк или полагаются на дефолтный
который по случайному стечению обстоятельств (IOT/ClusteredTable) может быть сортированным
относительно ключа если таковой был объявлен. Это тоже лежит вне реляционной алгебры.

Есть процессы сбора статистики по БД. Которые используют семплирование. Буквально - это выборка
рандомных 3-5% (или любых других процентов) от общего объема таблицы. Где или откуда
эти проценты выбираются - это ноу-хау каждой системы. Оракл ЕМНИП выбирает набор DB_BLOCKS
и уже из них берет семплирование. Это - тоже физика и без нее БД просто не может жить.

Есть технически хинты или хитрости которые использует разработчик. Например чтобы проверить
что таблица не пуста, junior SQL develper считает count(*) по всей таблице. А опытный делает
тот-же count(*) с limit. Хотя для реляционной алгебры - безразлично но для физической модели
очень даже важно.

В данном конкретном примере меня интересовало время чистого холодного старта БД sqlite и выборка
любой первой попавшейся строки из таблицы. Я пытался сравнить sqlite с h2/hsql/derby в их способе
хранения журнала и сегмента данных. Некоторые из них поджимают журнал. Некоторые делают
это отложенной операцией. Впрочем я могу это тоже проверить вместе с sqlite. И если sqlite ленив
и не поджимает журнал то я буду вынужден ждать первой строки до тех пор пока вся история изменений
таблицы не будет применена. Ведь история может содержать и deletes/updates. IMHO.

Именно поэтому я написал запрос таким образом. Если-бы я добавил order by то для миллиардной неиндексированной
таблицы это заняло-бы длинельное время и моя оценка была бы сложной. Мне пришлось-бы учитывать
неизвестное время сортировки. А так я получил чистое время прогрева всего стека.

UI-щики которые рисуют приложения в браузере обычно меряют TTFB для endpoints. Чтобы оценить как быстро можно
начать рендеринг пользовательского интерфейса исходя из свойств back-end. И если TTFB плохой то
бесполезно что-то оптимизировать в графической части. Надо лечить back.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092124
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В данном конкретном примере меня интересовало время чистого холодного старта БД sqlite и выборка
любой первой попавшейся строки из таблицы. Я пытался сравнить sqlite с h2/hsql/derby в их способе
хранения журнала и сегмента данных. Некоторые из них поджимают журнал. Некоторые делают
это отложенной операцией. Впрочем я могу это тоже проверить вместе с sqlite. И если sqlite ленив
и не поджимает журнал то я буду вынужден ждать первой строки до тех пор пока вся история изменений
таблицы не будет применена. Ведь история может содержать и deletes/updates. IMHO.

С журналом все просто, его обычно нет если нет открытых транзакций на запись:
https://habr.com/ru/post/149635/По умолчанию журнал ведется в режиме DELETE .

Это означает, что файл журнала удаляется после завершения транзакции. Сам факт наличия файла с журналом в этом режиме означает для SQLite, что транзакция не была завершена, база нуждается в восстановлении. Файл журнала имеет имя файла БД, к которому добавлено "-journal".
Как уже писал: подозреваю что данная БД используется только для чтения, если так, то затраты минимальны - проверить наличие файла с журналом.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092132
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я потестил с помощью штатной утилиты sqlite3.exe - открытие файла БД происходит не сразу, а только когда требуется обращение к БД, т.е. в момент передачи запроса.
В таком случае в режиме только чтение можно вообще отключить использование журнала перед подачей запроса
Код: sql
1.
pragma journal_mode=OFF;
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092136
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХМ... а что тут like не летает?

Код: 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.
sqlite> select count(*) from words;
752563301
Run Time: real 120.602 user 2.168943 sys 10.695976
sqlite> 
sqlite> explain query plan select word from words where word like 'sql%';
QUERY PLAN
`--SCAN TABLE words
Run Time: real 0.001 user 0.000134 sys 0.000000
sqlite> 
sqlite> .schema words
CREATE TABLE words(word text);
CREATE INDEX idx_words on words(word);
sqlite> 
sqlite> 
sqlite> explain query plan select word from words where word like = 'sql';
Run Time: real 0.000 user 0.000000 sys 0.000028
Error: near "=": syntax error
sqlite> explain query plan select word from words where word  = 'sql';
QUERY PLAN
`--SEARCH TABLE words USING COVERING INDEX idx_words (word=?)
Run Time: real 0.000 user 0.000000 sys 0.000102
sqlite> 
sqlite> explain query plan select word from words indexed by idx_words where word = 'sql';
QUERY PLAN
`--SEARCH TABLE words USING COVERING INDEX idx_words (word=?)
Run Time: real 0.000 user 0.000000 sys 0.000092
sqlite> explain query plan select word from words indexed by idx_words where word LIKE 'sql%';
Run Time: real 0.000 user 0.000000 sys 0.000083
Error: no query solution
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092142
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сорян. Все нормально. Нужна какая-то прагма.

Код: sql
1.
2.
3.
4.
5.
6.
7.
sqlite> pragma case_sensitive_like = ON;
Run Time: real 0.000 user 0.000000 sys 0.000033
sqlite> 
sqlite> explain query plan select word from words indexed by idx_words where word LIKE 'sql%';
QUERY PLAN
`--SEARCH TABLE words USING COVERING INDEX idx_words (word>? AND word<?)
Run Time: real 0.000 user 0.000122 sys 0.000000
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092174
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bonnie
Имеется тхт. файл с около 40кк строк. Строки из 20-30 латинских знаков без пробелов.
Хочу сделать поиск по наличию строки. Простым запросом.
Сейчас текстовый файл переведен в базу sqlite. не принципиальго но посчитал простым решением.


Самое простое решение - использовать Pos() для строк файла.

Быстрее будет нечто похожее для буфера чтения,
без предварительного выделения строк, но это сложнее.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092185
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А сорян. Все нормально. Нужна какая-то прагма.

Пишут что LIKE регистронезависимый, а индексы регистрозависимые, вот и не может использовать индекс без доп.настроек.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092196
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FTS5 индекс по 700 млн паролей у меня так и не построился. Уже 30 минут работает.
И сегмент данных - вырос до 50 Гб. Чуть позже я попробую детализировать.

Код: sql
1.
2.
3.
4.
5.
sqlite> CREATE VIRTUAL TABLE words2 USING fts5(word);
Run Time: real 0.120 user 0.002062 sys 0.000261
sqlite> 
sqlite> insert into words2 select * from words;
(waiting.....)



Возможно такой примитивный подход неприменим к текстовому поиску.
Нужно изучать опции FTS5 и понимать что он кладет в индекс. Слова? Биграммы? Триграммы?
Токенизирует и стеммингует английские слова?
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092200
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
FTS5 индекс по 700 млн паролей

Боюсь в данном случае FTS будет бесполезен, т.к. пароль это одно слово, а FTS ищет не подстроку, а слово внутри строки, т.е. слова должны быть разделены.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092204
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен. Если вернуться к кейсу автора.

Код: sql
1.
"SELECT column1 FROM table1 WHERE column1 LIKE '%$search_q%'"



Нам нужна такая структура которая толерантна к поиску подстрок. Триграммы - квадраграммы и так далее.

(я в топике не обсуждаю сейчас полезность этого кейса. Я думаю он может быть даже бесполезен.
Но это в некотором роде - челледж)


Вот здесь пишут про экспериментальную поддержку trigram https://www.sqlite.org/fts5.html

4.3.4. The Experimental Trigram Tokenizer

The experimental trigram tokenizer extends FTS5 to support substring matching in general, instead of the usual token matching. When using the trigram tokenizer, a query or phrase token may match any sequence of characters within a row, not just a complete token. For example:

Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE VIRTUAL TABLE tri USING fts5(a, tokenize="trigram");
INSERT INTO tri VALUES('abcdefghij KLMNOPQRST uvwxyz');

-- The following queries all match the single row in the table
SELECT * FROM tri('cdefg');
SELECT * FROM tri('cdefg AND pqr');
SELECT * FROM tri('"hij klm" NOT stuv');


Надо попробовать.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092230
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм...

Код: 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.
sqlite> CREATE VIRTUAL TABLE words_trigram USING fts5(word, tokenize="trigram");
Error: no such tokenizer: trigram
sqlite> 
sqlite> 
sqlite> .dbconfig
          defensive off
            dqs_ddl on
            dqs_dml on
        enable_fkey off
        enable_qpsg off
     enable_trigger on
        enable_view on
     fts3_tokenizer on
 legacy_alter_table off
 legacy_file_format off
     load_extension on
   no_ckpt_on_close off
     reset_database off
        trigger_eqp off
     trusted_schema on
    writable_schema off
sqlite> 
sqlite> .version
SQLite 3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837balt1
zlib version 1.2.11
gcc-9.3.0
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092272
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: sql
1.
2.
sqlite> CREATE VIRTUAL TABLE words_trigram USING fts5(word, tokenize="trigram");
Error: no such tokenizer: trigram


Похоже недавно добавили, качни свежий , в нем работает
Код: sql
1.
2.
3.
4.
sqlite> .version
SQLite 3.36.0 2021-06-18 18:36:39 5c9a6c06871cb9fe42814af9c039eb6da5427a6ec28f187af7ebfb62eafa66e5
zlib version 1.2.11
gcc-5.2.0
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092291
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я уже понял что у меня бомж-версия. Щас я смотрю этот-же класс индекса в Postgresql. Там - какая-то фигня
с установкой extensions.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092329
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставил новую версию SQLite. Еще строит вторую таблицу. Минут 30.

Вообще складывается впечатление что триграм-индекс еще более прожорливый чем BTree.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
mayton@ryzen-ssd:/sqlite3/3.3.6$ ./sqlite3 /db/sqlite3/mayton.db
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
sqlite> create table words(word text);
sqlite> .import /bigdata/billion/1.2billion.filtered.csv words
sqlite> 
sqlite> CREATE VIRTUAL TABLE words_trigram USING fts5(word, tokenize="trigram");
sqlite> 
sqlite> insert into words_trigram select * from words;
(waiting)


Еще работает.

Статистику по сегментам я еще не смотрел. Но внешне оригинальный источник данных (csv) был 8Гб.

А текущий размер базы - уже 27Г.

И эта виртуальная таблица - интересная штука. Это как-бы функция имеющая интерфейс таблицы которая
имеет свой набор сегментов данных. И запросы к ней выглядят не как запросы а как вызовы функций.

Я думаю что эти VT - это сильная сторона SQLite. Позволяют пользователям создавать свои собственные
специфичные структуры данных.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092345
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
Я так понимаю, что сортировка по умолчанию - это сортировка по первичному ключу.
И вы неправильно понимаете.
У всякого запроса есть план доступа и задача СУБД - оптимизация этого плана.
Если оптимальный план предусматривает доступ по индексу (у первичного ключа индекс обязательно будет) - будет доступ по индексу.
Если оптимальный план предусматривает извлечение данных со страниц базы в их физическом порядке - будет совсем по другому.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092356
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
Я так понимаю, что сортировка по умолчанию - это...


В SQL НЕТ никакой "сортировки по умолчанию".

Если нет ORDER BY порядок возвращаемых данных не гарантируется. Сейчас может так, через пару лет (в новой версии) по другому.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092365
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
ShSerge
Я так понимаю, что сортировка по умолчанию - это сортировка по первичному ключу.
И вы неправильно понимаете.
У всякого запроса есть план доступа и задача СУБД - оптимизация этого плана.
Если оптимальный план предусматривает доступ по индексу (у первичного ключа индекс обязательно будет) - будет доступ по индексу.
Если оптимальный план предусматривает извлечение данных со страниц базы в их физическом порядке - будет совсем по другому.

Правильно и неправильно. Давай не будем уходить от обсуждения конкретного запроса с которого все началось
mayton
Код: php
1.
$res = $db->query("SELECT * FROM table1 LIMIT 1");


Повторюсь: с точки зрения теории РСУБД написан неправильный запрос. Если очень надо - давай перечитаем Кодда, он разъясняет что в теории РСУБД нет порядка следования записей, т.е. без ORDER BY данный запрос неоднозначен. UB как сказали бы сишники. По-хорошему такой запрос должен вызывать ошибку, но т.к. такое никто не пишет, на генерацию ошибок не заморачиваются.
mayton обосновал смысл этого запроса 22362030 , полностью согласен с ним что для оценки времени отклика такой запрос идеально подходит.

Но в реальности есть какое-то физическое хранение, как следствие есть какая-то первая запись, которая стабильно выбирается первой при запросе
Код: sql
1.
SELECT * FROM table1


Как заметил ShSerge это будет запись с наименьшим primary key. Но нет гарантий что всегда будет так. Например в MSSQL автоматом для primary key создается кластерный индекс, т.е. как такового индекса нет, а записи физически упорядочиваются в порядке возрастания ключа, но никто не запрещает отменить кластерный индекс для primary key и сделать его по другому полю, просто оно так надо в 99.99% случаев.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092394
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Если я правильно помню, в SqlLite с Primary Key все не так просто. Там еще внутренний ключ есть.
2. Но даже в этом случае, без order by порядок опять таки будет зависит от кучи случайностей и самого запроса. Group By, Distinct и 100500 других ключевых слов на любые Primary Key'и и порядки положат наноболт.
3. Ошибки не обязаны выявлять ошибки логики. А рапортуют только о синтаксических ошибках. Limit без Order, это просто указание остановится после 1-ой найденной записи. За смыслом и логикой должен смотреть программист. Возможно, программист хотел этим запросом не данные получить, а просто проверить наличие хоть одной строки в таблице... кто же его знает... Но разумеется, если Вы пользуетесь запросами которые возвращают "первое попавшиеся" ( C ), то сами себе злобные буратино.
В общем-то, в Limit (для пагинации) без Order особой беды и нет. Т.к. система (в основном) детерминирована и в большинстве (не всегда) случаев повторные вызовы одинакового запроса выдадут те же данные.
В основном и не всегда - т.к. в случае "серьезных баз" и параллельного выполнения запросов, порядок будет зависит от множества случайных (временных) факторов и даже два последовательных вызова могут дать данные в совершенно разном порядке afaik.

IMHO
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092399
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Если очень надо - давай перечитаем Кодда, он разъясняет что в теории РСУБД нет порядка следования записей, т.е. без ORDER BY данный запрос неоднозначен.
Можно перечитывать хоть Кодда, хоть священные тексты, но ваша софистика не станет более убедительной.
Реляционная алгебра определяет некоторый набор правил и вообще никак не касается семантики кортежей строк данных.
Семантика (целиком и полностью) определяется автором конкретного приложения. Будь то РСУБД, которая реализует реляционную алгебру или приложение, которое манипулирует данными, доступ к которым обеспечивает эта самая РСУБД.UB как сказали бы сишники."Когда в руках молоток, то всё вокруг видится гвоздями". Что-то не замечал я, чтобы комитет исключал из стандарта все случаи UB, а разработчики компиляторов выдавали бы ошибки для кода с неопределённым поведением.
Как-то наоборот - эти мерзкие и отвратительные люди используют UB для всяческих оптимизаций. И далеко не всегда эти оптимизации совпадают с ожиданиями скромного прикладного программиста.По-хорошему такой запрос должен вызывать ошибкуА давайте вы не будете обобщать необобщаемое? А то дай вам волю и в борьбе за мир во всём мире вы не оставите камня на камне.
Если мне требуется десять произвольных записей, а для обеспечения "вашего детерминизма" придётся отсортировать миллиардную таблицу - "Я буду крайне разочарована. Крайне." (произносится голосом Аллы Демидовой).Как заметил ShSergeПочитайте, уже, хоть что-нибудь о методах доступа к данным.
Начать можете всё с той же реляционной алгебры г-на Кодда, которая чётко и однозначно формулирует единственное назначение первичного ключа: однозначная идентификация каждой строки кортежа (данных).
В этом определении нет ни одного слова об упорядоченности - только о сравнение на (не)равенство.
И хотя эффективная реализация первичных и предполагает использование того или иного варианта "монотонных счётчиков" это - именно что деталь реализации. Опираться на которую, вообще-то, нельзя. Точно так же, как нельзя опираться на устойчивость порядка следования строк кортежа.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092401
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov

...И хотя эффективная реализация первичных и предполагает использование того или иного варианта "монотонных счётчиков" это...

AFAIK в многопроцессорных/кластерных системах "монотонный счетчик" одна из главных проблем, а не как не эффективная реализация. Был очень сильно удивлен, когда увидел реализацию pk на случайных числах. Почитал в I-net'е, был удивлен еще сильнее, т.к. это бест практис для мейнфреймов.
Ну и AFAIK в кластерах/rac'ах основные коллизии и проблемы как раз из-за монотонных ключей/индексов.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092414
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Basil A. Sidorov

...И хотя эффективная реализация первичных и предполагает использование того или иного варианта "монотонных счётчиков" это...

AFAIK в многопроцессорных/кластерных системах "монотонный счетчик" одна из главных проблем, а не как не эффективная реализация. Был очень сильно удивлен, когда увидел реализацию pk на случайных числах. Почитал в I-net'е, был удивлен еще сильнее, т.к. это бест практис для мейнфреймов.
Ну и AFAIK в кластерах/rac'ах основные коллизии и проблемы как раз из-за монотонных ключей/индексов.

Возможно имеется в виду UUID.

Но для него существует несколько схем кодирования. Есть такие которые включают МАК-адрес сетевого интерфейса (48 бит)
и текущий timestamp. С разной точностью и знаковостью. И еще остается пространство для добавления шумовой
случайной информации. Такая схема кодирования достаточна что-б хотя-бы на практическом уровне закрыть вопрос
коллизий.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092417
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

А я открою контору, которая каждому гуиду будет выдавать сертификат уникальности.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092421
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю что торговля цифровыми подписями, гарантиями и круговым поручительством - это
бизнес будущего. И без централизации.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092435
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я думаю что торговля цифровыми подписями, гарантиями и круговым поручительством - это
бизнес будущего. И без централизации.

Про это тут оффтоп, но отдельной темой можно обсудить. ИМХО тут все очень противоречиво.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092462
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

...Возможно имеется в виду UUID...

Нет. Тупо рандом. Используется в Oracle Utilitites CC&B
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092472
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
AFAIK в многопроцессорных/кластерных системах "монотонный счетчик" одна из главных проблем
Проблема не монотонный счётчик как таковой, а странное желание не иметь "дырок" в значениях первичных ключей. Или не менее странное желание гарантировать монотонность этих значений "в порядке вставки".
А так - выдали каждому потоку "достаточно большой" диапазон и резко сократили конкуренцию за общий счётчик.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092473
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
И без централизации.
И вот на этом моменте оно не будет работать. Вааще.
Как вы конфликты-то собрались разрешать? И не конфликты протокола, а вполне материальные тяжбы?
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092493
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
И без централизации.
И вот на этом моменте оно не будет работать. Вааще.
Как вы конфликты-то собрались разрешать? И не конфликты протокола, а вполне материальные тяжбы?

Несколько лет назад некто Филипп Циммерман создавал концепцию такого протокола. Я читал
об этом где - то в конце 90х. Я тогда учился в универе. И меня очень впечатлило.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092570
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да протоколами-то всё в порядке.
В реальной жизни вы как собрались конфликты решать?
С чем, грубо говоря, в суд пойдёте? С хэшами и мнениями приглашённых экспертов? Правда?
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092611
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве мы ходим в суд если прилетает дырявое обновление от Microsoft или Google?

Ходить в суды - это вообще не моя ветка обсуждений. Я просто акцентировал на том что свободные
сообщества экспертов могли-бы давать свою оценку качества исходного кода для тех продуктов
которыми мы пользуемся каждый день. Остался пустяк - дать нам механизм этой оценки.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092629
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А разве мы ходим в суд если прилетает дырявое обновление от Microsoft или Google?
А у вас заключён миллионный контракт с MS и Google?
А вот когда речь про деньги - очень даже ходят. Хоть канал Царьград против Googel, хоть MS против Amazon (или наоборот).

P.S.
Странный инфантилизм: "Я тут фигню про деньги делаю, но как этим пользоваться в реальной жизни - мне вообще пофигу".
Сообщества, блин ...
Сунули тут недавно сообщество CentOS в анус и где оно теперь, это сообщество?
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092634
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня нет вопросов к корпорациям. С ними - всё ясно.

Я верю в альтруизм людей которые не получают денег но тем не менее продолжают выискивать
в исходниках баги. Консолидировать эту энергию - вот задача.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092635
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда направление странное выбрано.
В той же жабе инструментарий, в основе свой, застрял где-то на уровне Java 6-
В тех же сях с инструментарием вообще задница и собрать проект без, условно говоря, make-файла заточенного под конкретный комплиятор - практически невозможно.
Но, блин, нет - пилить надо, конечно же, блокчейн, который никому, кроме финансовых спекулянтов никуда не впилсЯ.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092637
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Странное направление. Что поделать. Другие направления уже исчерпали себя.
...
Рейтинг: 0 / 0
Помогите с поиском по 40млн строк в один столбец.
    #40092639
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... и духовно навеки почил(и).

P.S.
Удачи вам в вашем тёмнеющем мирке.
...
Рейтинг: 0 / 0
79 сообщений из 79, показаны все 4 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите с поиском по 40млн строк в один столбец.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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