1

Тема: Що порадите(СУБД) для зберігання і обробки великих об'ємів інформації?

Всім добрий день.
Маю серйозну дилему з вибором СУБД або взагалі якоїсь технології для зберігання і обробки великої кількості інформації.
Що я маю на вході: текстові дані(наприклад піб, пошта, номер телефону)
Що мені потрібно: СУБД або технологія яка дасть мені можливість робити вибірку даних по певних критеріях.
Приклад(який у мене зараз є): таблиця з трьома стовбцями(F1,F2,F3) . Стовбець F1 - ПІБ, стовбець F2 - email адреси, стовбець F3 - номери телефонів. В таблиці ~41 000 000 запис
І таких таблиць є більше десяти. Сумарна кількість записів по всіх таблицях становитиме більше 500 000 000...
Що мені потрібно: максимально швидкий пошук простими запитами "SELECT * FROM table_name WHERE F1 = 'some_value'".
Залізо і ПЗ: Core I5 2-ге покоління, 2.9 Ghz, 16GB RAM, SSD , MYSQL 8.0

Зараз з кількістю 41 000 000 записів - пошук триває приблизно 40 секунд. А коли буде більше пів мільярда запиів...боюся навіть уявити скільки триватиме пошук.
Закономірно я розумію, що на такому залізі не варто розраховувати на дуже швидкий пошук, то ж прошу Вас допомоги у виборі заліза і конфігурації самого MYSQL або ж іншої СУБД

P.S: готовий розглянути комерційні пропозиції, так як проект дуже важливий для встановлення кацапських загарбників

2

Re: Що порадите(СУБД) для зберігання і обробки великих об'ємів інформації?

Що завгодно, що підтримує індексацію, піде для простих запитів. MySQL - з головою вистачить. Просто додайте індекси.

Подякували: OstapK, leofun012

3 Востаннє редагувалося koala (06.05.2022 09:47:59)

Re: Що порадите(СУБД) для зберігання і обробки великих об'ємів інформації?

CREATE INDEX table_name_f1_idx ON table_name ((f1))

Після цього на вашому залізі час запиту піде глибоко під мілісекунду.

Подякували: OstapK, leofun012

4

Re: Що порадите(СУБД) для зберігання і обробки великих об'ємів інформації?

koala написав:
CREATE INDEX table_name_f1_idx ON table_name ((f1))

Після цього на вашому залізі час запиту піде глибоко під мілісекунду.

Щиро вдячний за відповідь. І невелике уточнення: мається на увазі для кожної таблиці створити окремий стовбець (PRIMARY_KEY), наприклад з числовим значенням ві 1 і до ....., чи власне самі стовбці з даними(email, ПІБ, номер телефону) робити ключами?

5

Re: Що порадите(СУБД) для зберігання і обробки великих об'ємів інформації?

можу помилятись, але це залежить від того, які саме дані ви будете використовувати при пошуку. Якшо ви будете шукати по індексу (отому числу), тоді робіть його індексом, а якшо шукатимете по імені, то робіть ім'я індексом.

Суть цих індексів в тому, шо вони побудують шось штибу таблички, котра дозволить отримувати відповідні записи дуже швидко.

Наприклад, якшо у вас є табличка з записом

ім'я, прізвище, по батькові, вік, зріст, вага, місто

і вам треба знайти Василя, то маючи індекс для поля `ім'я`,  у вас буде шось таке

Василь:  ім'я, прізвище, по батькові, вік, зріст, вага, місто
Петро: ім'я, прізвище, по батькові, вік, зріст, вага, місто
Хведір: ім'я, прізвище, по батькові, вік, зріст, вага, місто

тобто, воно не буде проходити по всім записам і перевіряти, чи ім'я цього запису є Василем, а воно просто звернеться до тієї таблички, передасть туди Василь, і відразу отримає відповідний запис.
Це якшо спрощено.

До речі, індекси можна робити складними, коли один індекс складається зі значень декількох полів. Наприклад, Ім'я, прізвище і по батькові можуть бути використані для побудови одного індексу.
Звісно, створення таких індексів вимагає додаткової пам'яті, бо вони десь мають зберігатись, але натомість ви отримуєте швидкодію. Тобто, ви розмінюєте трішки пам'яті на диску на швидкість пошуку в базі даних, і воно того варте.

Подякували: OstapK1

6

Re: Що порадите(СУБД) для зберігання і обробки великих об'ємів інформації?

Дякую усім за відповіді - трішки поексперементував з індексами - швидкодія зросла в рази. Буду тепер нормалізовувати дані і додавати індекси.
Але на цьому тему не згортаю бо ніколи немає межі для оптимізації :) То ж вислухаю і інших учасників форуму)

7

Re: Що порадите(СУБД) для зберігання і обробки великих об'ємів інформації?

Раджу розбити поле ПІБ на три окремих поля, а номери телефонів привести до одного вигляду. Тоді індекси буде легше робити, і дублікати шукати.

Подякували: OstapK, insertbox2

8 Востаннє редагувалося koala (06.05.2022 16:46:10)

Re: Що порадите(СУБД) для зберігання і обробки великих об'ємів інформації?

OstapK написав:
koala написав:
CREATE INDEX table_name_f1_idx ON table_name ((f1))

Після цього на вашому залізі час запиту піде глибоко під мілісекунду.

Щиро вдячний за відповідь. І невелике уточнення: мається на увазі для кожної таблиці створити окремий стовбець (PRIMARY_KEY), наприклад з числовим значенням ві 1 і до ....., чи власне самі стовбці з даними(email, ПІБ, номер телефону) робити ключами?

Ключі потрібні для зв'язування таблиць. В цілому краще робити окремий ключ, але якщо у вас немає складних запитів по кількох таблицях - це несуттєво. Ну, хіба що ключ має бути унікальним... тобто знову ж таки краще окремий ключ.

9

Re: Що порадите(СУБД) для зберігання і обробки великих об'ємів інформації?

Torbins написав:

Раджу розбити поле ПІБ на три окремих поля, а номери телефонів привести до одного вигляду. Тоді індекси буде легше робити, і дублікати шукати.

також код моб.оператора ( або міста та країни )
+38 067 *** ** **
+48 055 *** ** **

та електорнні адреси типу :
*****@gmail.com
*****@zoho.com

а тип субд вже відносно буде мати значення, якщо  вірно сформована база для пошуку
і , до речі - а як з введенням інформації ?