![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Уточняю вопрос (иначе он был бы бессмысленным)
Допустим, у нас есть 1 (одна) таблица с 2 (двумя) колонками
В первой колонке - большой интегер, Юникс тайм, отсортированный по возрастанию, во второй колонке - строки (собственно пейлоуд, данные)
Я хочу максимально быстро выдавать те строки таблицы, которые удолетворяют некому условию по первой колонке, например, все строки соответствующие одному дню
Это элементарно делается с использования условного Постгреса, ок.
Но ведь можно создать на файловой системе набор файлов, для каждого дня, где содержимое файла и будет набор строк с пейлоудом. И отдавать данные путем просто открытия файла с нужным именем (которое совпадает с днем, например, 2010.10.31.txt) и чтением данных из файла. Там и кэширование автомически появится, на уровне файловой системе, типа, бесплатный бонус.
Что будет в результате быстрее, как думаете?
Вопрос апдейта данных и сложных запросов не стоит, речь про узкоспециализированную задачу, описанную выше.
Тут ведь еще какой момент есть - если речь идет про веб, то выдача данных может идти НАПРЯМУЮ через стоящий впереди реверс-прокси Nginx, через статическую директорию. То есть просто по прямому УРЛ обращаешься к файлу с соответствующим именем, скажем, http://mysite.com/static/db/2010.10.31.txt, и усё, Энджинэкс выдаст данные даже не потревожив Ноду (аппликейшен сервер). А если делать через базу данных, то аппликейшен сервер будет по всякому задействован...
Допустим, у нас есть 1 (одна) таблица с 2 (двумя) колонками
В первой колонке - большой интегер, Юникс тайм, отсортированный по возрастанию, во второй колонке - строки (собственно пейлоуд, данные)
Я хочу максимально быстро выдавать те строки таблицы, которые удолетворяют некому условию по первой колонке, например, все строки соответствующие одному дню
Это элементарно делается с использования условного Постгреса, ок.
Но ведь можно создать на файловой системе набор файлов, для каждого дня, где содержимое файла и будет набор строк с пейлоудом. И отдавать данные путем просто открытия файла с нужным именем (которое совпадает с днем, например, 2010.10.31.txt) и чтением данных из файла. Там и кэширование автомически появится, на уровне файловой системе, типа, бесплатный бонус.
Что будет в результате быстрее, как думаете?
Вопрос апдейта данных и сложных запросов не стоит, речь про узкоспециализированную задачу, описанную выше.
Тут ведь еще какой момент есть - если речь идет про веб, то выдача данных может идти НАПРЯМУЮ через стоящий впереди реверс-прокси Nginx, через статическую директорию. То есть просто по прямому УРЛ обращаешься к файлу с соответствующим именем, скажем, http://mysite.com/static/db/2010.10.31.txt, и усё, Энджинэкс выдаст данные даже не потревожив Ноду (аппликейшен сервер). А если делать через базу данных, то аппликейшен сервер будет по всякому задействован...
no subject
Date: 2016-02-25 09:02 am (UTC)no subject
Date: 2016-02-25 09:19 am (UTC)быстрее
Время передачи данных к клиенту по сети все равно будет на порядки больше и та ничтожная экономия времени о которой вы говорите, ни чего не стоит. А при разработке создаст кучу ненужного головняка.
no subject
Date: 2016-02-25 09:52 am (UTC)no subject
Date: 2016-02-25 09:54 am (UTC)Самое быстрое (в общем варианте) - это денормализовать таблицы добавить столбцов по характерным запросам ( например "день недели", "число", "месяц") и загнать всё в память.
То есть просто по прямому УРЛ обращаешься к файлу с соответствующим именем...
Угу. Так и хочется добавить в имя ../../../ и выйти на новый уровень.
no subject
Date: 2016-02-25 11:18 am (UTC)nginx не позволит, там прописана публичная папка, и за ее пределы хрен выйдешь
no subject
Date: 2016-02-25 02:32 pm (UTC);-)
no subject
Date: 2016-02-25 03:05 pm (UTC)то что вебсервера имеют статические папки - это абсолютный стандарт современного веба. В этих папках лежат ресурсы, которые должны быть бысто отдаваться клиенту и которые не содержат секрета, потому что они и так видны в браузере (в частности, картинки, стили и джаваскрипты).
если ты научился ломать защиту nginx или апача предложенным образом - поздравляю, ты сломал 99% всех вебсайтов мира.
иными словами, это как сказать - ваш вебсервере работает на виндоус или юникс ? а вот список серьюрити проблем этих ОС, ай-ай-ай. Возникает законный вопрос -ок, виндоус и юникс низзя для сервера, а что МОЖНО? Мейнфрейм ? Ну, ок.
no subject
Date: 2016-02-25 03:36 pm (UTC)no subject
Date: 2016-02-26 08:24 am (UTC)no subject
Date: 2016-02-26 08:26 am (UTC)no subject
Date: 2016-02-25 10:36 am (UTC)no subject
Date: 2016-02-25 11:19 am (UTC)no subject
Date: 2016-02-25 12:44 pm (UTC)Я в свое время одно приложение (PHP) переводил с файлов на БД - разница по скорости в десятки раз.
no subject
Date: 2016-02-25 07:58 pm (UTC)no subject
Date: 2016-02-25 01:05 pm (UTC)no subject
Date: 2016-02-25 01:00 pm (UTC)Или умный админ, который заточит БД под идеальное кэширование :)
no subject
Date: 2016-02-25 05:45 pm (UTC)