orleanz: (main)
[personal profile] orleanz
Уточняю вопрос (иначе он был бы бессмысленным)

Допустим, у нас есть 1 (одна) таблица с 2 (двумя) колонками

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

Я хочу максимально быстро выдавать те строки таблицы, которые удолетворяют некому условию по первой колонке, например, все строки соответствующие одному дню

Это элементарно делается с использования условного Постгреса, ок.

Но ведь можно создать на файловой системе набор файлов, для каждого дня, где содержимое файла и будет набор строк с пейлоудом. И отдавать данные путем просто открытия файла с нужным именем (которое совпадает с днем, например, 2010.10.31.txt) и чтением данных из файла. Там и кэширование автомически появится, на уровне файловой системе, типа, бесплатный бонус.

Что будет в результате быстрее, как думаете?

Вопрос апдейта данных и сложных запросов не стоит, речь про узкоспециализированную задачу, описанную выше.

Тут ведь еще какой момент есть - если речь идет про веб, то выдача данных может идти НАПРЯМУЮ через стоящий впереди реверс-прокси Nginx, через статическую директорию. То есть просто по прямому УРЛ обращаешься к файлу с соответствующим именем, скажем, http://mysite.com/static/db/2010.10.31.txt, и усё, Энджинэкс выдаст данные даже не потревожив Ноду (аппликейшен сервер). А если делать через базу данных, то аппликейшен сервер будет по всякому задействован...

Date: 2016-02-25 09:02 am (UTC)
From: [identity profile] imfromjasenevo.livejournal.com
не программист, но мне кажется, что файлы должны быть быстреей на порядок, другое дело, что базы более надежно и больше гарантий, что данные не похерятся и структура не сломается, если что-то не так пойдет.

Date: 2016-02-25 09:19 am (UTC)
From: [identity profile] vsamovarov.livejournal.com
>Это элементарно делается с использования условного Постгреса, ок.

быстрее

Время передачи данных к клиенту по сети все равно будет на порядки больше и та ничтожная экономия времени о которой вы говорите, ни чего не стоит. А при разработке создаст кучу ненужного головняка.

Date: 2016-02-25 09:52 am (UTC)
From: [identity profile] old-radist.livejournal.com
Ну, файлы ж тоже могут лежать на 5400 оборотах, а могут и на SSD. С другой стороны, есть ин-мемори базы.

Date: 2016-02-25 09:54 am (UTC)
From: [identity profile] vit-r.livejournal.com
Зависит от кучи факторов. Тем более, что таблицы могут быть в памяти, а могут висеть в распределённой базе. В общем случае, накладные расходы на открытие файлов слишком большие.

Самое быстрое (в общем варианте) - это денормализовать таблицы добавить столбцов по характерным запросам ( например "день недели", "число", "месяц") и загнать всё в память.

То есть просто по прямому УРЛ обращаешься к файлу с соответствующим именем...

Угу. Так и хочется добавить в имя ../../../ и выйти на новый уровень.
Edited Date: 2016-02-25 09:55 am (UTC)

Date: 2016-02-25 11:18 am (UTC)
From: [identity profile] orleanz.livejournal.com
" Угу. Так и хочется добавить в имя ../../../ и выйти на новый уровень.

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

Date: 2016-02-25 03:05 pm (UTC)
From: [identity profile] orleanz.livejournal.com
предложенный тобой "вариат взлома" не имеет никакого отношения описанной задаче, он "ломает" вообще любой вебсервер, не важно с базой или без базы.

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

если ты научился ломать защиту nginx или апача предложенным образом - поздравляю, ты сломал 99% всех вебсайтов мира.

иными словами, это как сказать - ваш вебсервере работает на виндоус или юникс ? а вот список серьюрити проблем этих ОС, ай-ай-ай. Возникает законный вопрос -ок, виндоус и юникс низзя для сервера, а что МОЖНО? Мейнфрейм ? Ну, ок.






Edited Date: 2016-02-25 03:08 pm (UTC)

Date: 2016-02-25 03:36 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Есть правило: для безопасности запрещено должно быть всё, что не разрешено. В этом смысле любой доступ к чему-то на диске - зло.

Date: 2016-02-26 08:24 am (UTC)
From: [identity profile] orleanz.livejournal.com
то есть если на вебсайте CIA (ЦРУ) показан логотип этой организации, который отдается вебсервером через статическую папку, как это обычно бывает с картинками - это потому, что ЦРУ не знает как организовать безопасность?

Date: 2016-02-26 08:26 am (UTC)
From: [identity profile] vit-r.livejournal.com
ЦРУ - это государственная контора. Там чиновники. Фиг знает, как и у кого одни заказывали веб-страницу.

Date: 2016-02-25 10:36 am (UTC)
From: [identity profile] Сергей Монахов (from livejournal.com)
БД быстрее. Открытие файла с диска это очень медленно.

Date: 2016-02-25 11:19 am (UTC)
From: [identity profile] orleanz.livejournal.com
а БД сама типа не открывает файл, а волшебно знает его содержимое сама по себе?
Edited Date: 2016-02-25 11:20 am (UTC)

Date: 2016-02-25 12:44 pm (UTC)
From: [identity profile] Сергей Монахов (from livejournal.com)
А он у нее уже открыт, вопрос позиционирования курсора в нем). А даже если и открывать - потом все закешируется с некой вероятностью.
Я в свое время одно приложение (PHP) переводил с файлов на БД - разница по скорости в десятки раз.

Date: 2016-02-25 07:58 pm (UTC)
From: [identity profile] imfromjasenevo.livejournal.com
для php возможно это так, но если что-то более вменяемое, то очень сомнительный результат БД пользуется файловой системой так или иначе, т.е. сразу писать в файл быстрей.

Date: 2016-02-25 01:05 pm (UTC)
From: [identity profile] p-a-s-h-a.livejournal.com
БД строит в памяти хитрейшим образом организованные кэши. Чем навороченнее БД тем БД-шные кэши хитрее. Также достаточно навороченная БД организует запись в файлы (своего, внутреннего формата) так, чтобы не мешала фрагментация файлов, или чтобы фрагментации файлов вообще не было

Date: 2016-02-25 01:00 pm (UTC)
From: [identity profile] p-a-s-h-a.livejournal.com
Может зависеть от количества одновременных обращений. При массовом обращении БД быстрее. При небольшом количестве может быть быстрее файловая система. Также ускорить могут навешанные сверху стандартных файловосистемных и БД-шных дополнительные кэшировщики...
Или умный админ, который заточит БД под идеальное кэширование :)

Date: 2016-02-25 05:45 pm (UTC)
From: [identity profile] sab123.livejournal.com
Я думаю файлы будут гораздо быстрее. БД - очень медленная штука.

Profile

orleanz: (Default)
orleanz

December 2018

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 25th, 2025 09:03 pm
Powered by Dreamwidth Studios