Использование больших двоичных объектов для небольшого журнала - PHP/MySQL
Я создаю небольшой веб-сайт журнала, который планирую использовать ежедневно, но мне интересно, следует ли хранить изображения и видео моих статей в виде физических файлов или в виде BLOB
в моем MySQL Table
.
Моя главная проблема заключается в том, что мне сказали, что это замедляет работу вашего сайта, если вы используете данные больших двоичных объектов, но я не знаю, происходит ли это при использовании всей информации в одной таблице или просто при их использовании.
Моей идеальной настройкой было бы иметь 2 таблицы:
article_table:
ID | Title | Image | Article
-------------------------------
int | varchar | int | text
blob_table:
ID | Name | Blob
--------------------
int | varchar | blob
Итак, когда я загружаю свой статья, основанная на ID
, затем я бы выбрал свое изображение большого двоичного объекта, где идентификатор совпадает:
if(isset($_GET["id"])){$id = $_GET["id"];}else{
header("Location: http://www.wesbite.com");
exit();
};
$blob_sql = "SELECT * FROM blob_table WHERE id = '$id'";
$blob_res = mysqli_query($con, $blob_sql);
Используя этот метод, как это повлияет на наличие огромного количества записей в blob_table
при попытке отобразить их на article.php страница?
Кроме того, кто-нибудь знает, есть ли разница в размере файла, который физически хранится, по сравнению с размером большого двоичного объекта? т.Е. Если физический JPG составляет 320 КБ, каков будет эквивалентный размер ячейки таблицы больших двоичных объектов.
Наконец - Есть ли разница в фактической скорости загрузки при сравнении загрузки большого двоичного объекта с загрузкой физического файла?
Спасибо.
1 answers
Я создаю небольшой веб-сайт журнала, который планирую использовать ежедневно, но мне интересно, следует ли хранить изображения и видео моих статей в виде физических файлов или в виде большого двоичного объекта в моей таблице MySQL.
Физические файлы. Меньше нагрузки на сервер.
...Мне сказали, что это замедляет работу вашего сайта, если вы используете данные больших двоичных объектов, но я не знаю, происходит ли это при использовании всей информации в одной таблице или просто при их использовании.
Для хранения в базе данных сервер базы данных должен выполняться в фоновом режиме, затем вы просите сохранить данные в большом двоичном объекте, который вставляет ваш файл во внутренние файлы базы данных sql для обработки данных, и при поиске файла он должен пройти через файлы базы данных и извлечь данные для вас.
Моей идеальной настройкой было бы иметь 2 таблицы...Используя этот метод, как это повлияет на наличие огромного количества записей в таблице больших двоичных объектов при попытке отобразить их на article.php страница?
Лучший способ сделать это - создать одну таблицу (не две), которая предоставляет информацию о файле, а также о местоположении файла. Если файлы должны быть защищены, найдите их за пределами корневой папки документа и попросите сценарий загрузить и обработать их для пользователя.
Таким образом, у вас может быть такая таблица:
ID | Description | filename
----------------------------
1 | apples | /home/myself/public_html/apple.jpg
2 | oranges | /home/myself/public_html/orange.jpg
3 | bananas | /home/secret/bananas.jpg
Кроме того, кто-нибудь знает, есть ли разница в размере файла, который физически хранится, по сравнению с размером большого двоичного объекта? т. Е. Если физический JPG составляет 320 КБ, что соответствует размеру ячейки таблицы больших двоичных объектов.
Это зависит от используемого SQL и версии. Каждый тип данных имеет разные размеры и зависит от того, как вы объявляете данные. Например, если вы объявляете идентификатор как BIGINT вместо TINYINT, то вы, вероятно, тратите 6 байт на запись. Хранение файла в виде реального файла одновременно ускоряет обработку и экономит место, и для его обработки не требуется механизм SQL.
Наконец - Есть ли разница в фактической скорости загрузки при сравнении загрузки большого двоичного объекта с загрузкой физического файла?
Скорость загрузки зависит в первую очередь от того, насколько перегружен ваш сервер. Если миллионы людей получают доступ к нему в одну и ту же секунду, то, скорее всего, загрузка может быть значительно медленной. Когда гость загружает что-то, это по большей части неопределенные данные, потому что его сценарий сервера затем определяет, что происходит с данными. В PHP вы можете сделать так, чтобы гости могли загружать файлы это быстрее, так как вам не нужно открывать файл на сервере, чтобы преобразовать его в большой двоичный объект.