1

Тема: Куди зберегти інформацію: у файли чи у базу?

Давайте напишемо об’єктивні тести в яких ми визначимо декілька параметрів.
1. Швидкість роботи
2. Зручність.

Пропоную наступні кейси:
1. Зберігання 1000 даних
2. зберігання  10000 даних
3. Зберігаємо 500 000 даних

Для прикладу у нас є список електронних 20 електронних адрес. Потрібно перевірити чи вони є у нашій скарбинці (файлі або у базі) Якщо немає додати.

Ще один кейс це коли ми маємо 100 адрес. Провести операцію ще раз.

Пропоную написати скрипти так що б перша частина набивала однакові дані в базу і у файл а дальше виконувала перевірку і засікала час.

Ну що погнали?

2

Re: Куди зберегти інформацію: у файли чи у базу?

funivan написав:

Для прикладу у нас є список електронних 20 електронних адрес. Потрібно перевірити чи вони є у нашій скарбинці (файлі або у базі) Якщо немає додати.
Ще один кейс це коли ми маємо 100 адрес. Провести операцію ще раз.

Звичайно база.

В випадку файлів мені треба самому реалізувати lru кеш, індекси та всякі B-дерева.

Я занадто тупий для цього чексно кажучи :3

3

Re: Куди зберегти інформацію: у файли чи у базу?

Файли використовувати там,де немає великого обєму інформації та потрібно тільки записати,зчитати якийсь рядок,перевірити існування запису запису. Використовувати таке тільки при навантажених скриптах,типу брут,чекер,парсер,які постійно пишуть/зчитують прості рядки.

Для нормальних двигунів/CMS  тільки БД (зручніше,функціональніше).

При першому варіанті не треба робити ніяких складних вибірок та операцій і де потрібна швидкість.

4

Re: Куди зберегти інформацію: у файли чи у базу?

При першому варіанті не треба робити ніяких складних вибірок та операцій і де потрібна швидкість.

тобто файл без проблем справиться з кількістю в 10 000  і  500 000 електронних адрес. Так ?

5 Востаннє редагувалося VTrim (30.10.2014 15:50:31)

Re: Куди зберегти інформацію: у файли чи у базу?

funivan написав:

При першому варіанті не треба робити ніяких складних вибірок та операцій і де потрібна швидкість.

тобто файл без проблем справиться з кількістю в 10 000  і  500 000 електронних адрес. Так ?

Ну це не перевіряв,але думаю справиться.
Хоча мені здається,шо зі збільшенням кількості записів буде тільки більше тормозів.
Якщо писати в файл кожен рядок з переносом і робити перевірку наявності запису через in_array в file() який створить масив із всіх рядків файлу (а це нехай 100 000 записів в память).

Ну візьміть перевірте,код і результат скиньте сюди :)

6

Re: Куди зберегти інформацію: у файли чи у базу?

Ок давайте перевіримо. я пишу в базу а ви у файл ;) потім зведемо все разом)

7 Востаннє редагувалося VTrim (30.10.2014 15:52:45)

Re: Куди зберегти інформацію: у файли чи у базу?

Стоп,а час запису також засікаємо?)

8

Re: Куди зберегти інформацію: у файли чи у базу?

так.

9

Re: Куди зберегти інформацію: у файли чи у базу?

<?php
$start_time = microtime();
$start_array = explode(' ',$start_time);
$start_time = $start_array[1] + $start_array[0];
for($i=0; $i<=100000; ++$i) file_put_contents('list.txt',"Запис $i\n",FILE_APPEND);
$end_time = microtime();
$end_array = explode(' ',$end_time);
$end_time = $end_array[1] + $end_array[0];
$time = $end_time - $start_time;
echo 'Час на операцію: '.$time.' сек<br>';

Час на операцію: 60.844574928284 сек
Рівно хвилина :)

Тут ше від потужності самого пк залежить.

10

Re: Куди зберегти інформацію: у файли чи у базу?

Хм. funivan, відкрийте папочку куди встановлений mysql  у вас чи що там є і подивіться куди зберігає інформацію "база".

11

Re: Куди зберегти інформацію: у файли чи у базу?

Vo_Vik - ви до чого ведете? Що інформація зберігається у файлах ;) ? я це знаю. А знаєте до чого веду я ;) ?

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

12

Re: Куди зберегти інформацію: у файли чи у базу?

60.844574928284 сек

Відвикайте. Ніякий хронометр не поміряє час з такою точністю. Судячи з документації, мають сенс лише три цифри після коми.

13

Re: Куди зберегти інформацію: у файли чи у базу?

Vo_Vik написав:

Хм. funivan, відкрийте папочку куди встановлений mysql  у вас чи що там є і подивіться куди зберігає інформацію "база".

А що являє собою база без лапок?

14

Re: Куди зберегти інформацію: у файли чи у базу?

funivan написав:

Vo_Vik - ви до чого ведете? Що інформація зберігається у файлах ;) ? я це знаю. А знаєте до чого веду я ;) ?

Що людина яка вважає себе крутішою за  розробників mysql може спробувати написати програмку, яка буде справлятися краще і швидше з обробкою інформаці, зберіганням її у файлах і пошуком її там. Правильно?

15

Re: Куди зберегти інформацію: у файли чи у базу?

quez написав:

А що являє собою база без лапок?

https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Fort-Jefferson_Dry-Tortugas.jpg/800px-Fort-Jefferson_Dry-Tortugas.jpg

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

16

Re: Куди зберегти інформацію: у файли чи у базу?

Vo_Vik написав:
funivan написав:

Vo_Vik - ви до чого ведете? Що інформація зберігається у файлах ;) ? я це знаю. А знаєте до чого веду я ;) ?

Що людина яка вважає себе крутішою за  розробників mysql може спробувати написати програмку, яка буде справлятися краще і швидше з обробкою інформаці, зберіганням її у файлах і пошуком її там. Правильно?

Такі люди називають себе розробниками Oracle або розробниками Microsoft

Нема питань, база всім базам база.

17

Re: Куди зберегти інформацію: у файли чи у базу?

quez написав:

Такі люди називають себе розробниками Oracle або розробниками Microsoft

ну і я про те ж)

18

Re: Куди зберегти інформацію: у файли чи у базу?

завтра закину 6ть файлів. Очікуйте ;)

19

Re: Куди зберегти інформацію: у файли чи у базу?

Те що база даних зберігіється у вигляді файлів нічого не значить, все одно нею керує СУБД. А як же транзакції, фізична оптимізація зберігання даних, індекси, дублікації-реплікації, отпимізація запитів вибірки на льоту, "хранимі" процедури?

Якщо у вас дві таблички, по кілька записів в кожній то можна і в файлі, а якщо 100 таблиць?

До речі, якого виду файли, текстові?

20

Re: Куди зберегти інформацію: у файли чи у базу?

Отже зробив звіт. https://github.com/funivan/db-vs-file
Висновок такий. Писати у файл набагато швидше ніж у базу (ну це логічно)
Читати з файлу коли він не великий - швидше ніж читати дані з бази.
Але база виграє коли нам треба читати і писати середні і великі дані. Тобто індекси грають роль;)
Якщо 100-1000 то мож і у файл)



Ось тут весь код https://github.com/funivan/db-vs-file

http://i.imgur.com/llTm1pj.png

http://i.imgur.com/Oq4B9ai.png

http://i.imgur.com/fbdqeTQ.png

Подякували: quez, koala, Arete, Анатолій4