powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / файло обмнеик.
37 сообщений из 37, показаны все 2 страниц
файло обмнеик.
    #37785758
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Планируется создать файло обмнеик.
Php +mysql +Apache+ nginx
Хотел узнать мне опытных людей как лучше организовать структуру папок пользователей в базе данных или в файловой системе.
Однозначно документы будут храниться на диске в базе данных только ссылки на них.
Поскольку файлов будет очень много и постоянно будут скачиваться и закачивается, объемы файлов до 10ГБ. Даль больше.
Каждый пользователь может создавать свои папки, сколько угодной вложенности.
Есть идея хранить структуру папок в базе данных. Это позволяет:
1. легко выполнять операции переноса файлов с одной папки в другую
2. организовать доступ к папке тем пользователя, которым нужно.
3. Удобно при использование нескольких файловых хранилищ т.е. файлы в одной папке могут храниться на разных серверах.
4. Ну и нет нагрузки на файловый сервер.
А вот из минусов, какие могут быть при такой реализации?
Не будет ли проблем с базой когда кол-во пользователей разрастется до 100 000 и более?
...
Рейтинг: 0 / 0
файло обмнеик.
    #37785892
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В целом подход правильный. Только вот смущает:Valerik2. организовать доступ к папке тем пользователя, которым нужно.Не ясно, каким образом тут замешана база данных. Должен ли получить доступ к файлу сторонний пользователь, не входящий в подмножество "которым нужно", если в адресной строке браузера введет правильный адрес файла?

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786386
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А прямого доступа к файлам не будет.
Серверу будет посылаться запрос пита [files/gjeqrwqopiki13rp23ioiripo12]
Php согласно этому hash коду находит данные в базе данных и через nginx отдает файл.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786403
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне вот что интересно.
Что будет работать быстрее такой вот подход хранение дерева папок пользователя в базе данных или же все таки файловой системе. Когда кол-во пользователей вырастет больше 100 000 и у каждого пользователя будет свое дерево. Я так понял в данном случаи, что для быстрой работы с базой обычная древовидная структура базы не подойдет (типа ID, PARENTID, …. Идт).?
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786418
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда нагрузка по-настоящему станет горячей, ни то, ни другое в чистом виде не будет максимально эффективным.

Ну какие это объемы будут? Там уже о кластеризации, кешировании и прочей лобуде думать надо. Даже о том, как роутинг вообще от php отобрать и отдать специализированному более скорострельному решению. А не о том, что не по приколу ли в БД засунуть?

Ну а так, если делить мир на белое и черное, то большие файлы пхать и читать в БД сомнительная польза, а вот миллионы пузатой мелочи меньше размера пары минимальных блоков записи/чтения - это уже пошесть, от которой голова чешется. Интуитивно возникает желание как-то это все культурно сгрузить и скатекой прикрыть, чтобы не маячило =))
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786427
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValerikЧто будет работать быстрее такой вот подход хранение дерева папок пользователя в базе данных или же все таки файловой системе. Когда кол-во пользователей вырастет больше 100 000 и у каждого пользователя будет свое дерево.А в том ли вопрос то?
Насчет файловой системы: делайте такую организацию, чтоб в одной папке было не более тысячи элементов (файлов или папок). При бОльших количествах много времени уходит на чтение каталога. Это в любом случае, независимо от того как будете строить дерево (по базе или по ФС). Но это так, к сведению.
Далее, при замахе на оверстотыщ юзеров скорее всего одного то сервера и не будет достаточно. Потому будете хранить в БД не только путь до файла в ФС, но и имя сервера, который этот файл отдавать будет. И еще придумаете как этот сервер будет разбираться, можно ли юзеру отдавать этот файл или нет. Скорее всего.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786483
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleValerikЧто будет работать быстрее такой вот подход хранение дерева папок пользователя в базе данных или же все таки файловой системе. Когда кол-во пользователей вырастет больше 100 000 и у каждого пользователя будет свое дерево.А в том ли вопрос то?
Насчет файловой системы: делайте такую организацию, чтоб в одной папке было не более тысячи элементов (файлов или папок). При бОльших количествах много времени уходит на чтение каталога. Это в любом случае, независимо от того как будете строить дерево (по базе или по ФС). Но это так, к сведению.
Далее, при замахе на оверстотыщ юзеров скорее всего одного то сервера и не будет достаточно. Потому будете хранить в БД не только путь до файла в ФС, но и имя сервера, который этот файл отдавать будет. И еще придумаете как этот сервер будет разбираться, можно ли юзеру отдавать этот файл или нет. Скорее всего.

Так это и не планируется хранить все на одном сервере.
По мере разрастания, и файловый сервер создавать новый и базу новую заводить.
Про то что в папочке хранить не более тысячи элементов это понятно, пока идея хранить файлы в папках по времени закачки каждый час новая папка.
Про то как отдавать пользователю файл или нет, может я чего-то не до понимаю? Пока идея такая серверу передается hash ID файла по нему в базе смотрим кому принадлежит этот файл и кто его запрашивает если у этого пользователя есть доступ к этому файлу то отдаем его.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786486
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonКогда нагрузка по-настоящему станет горячей, ни то, ни другое в чистом виде не будет максимально эффективным.

Ну какие это объемы будут? Там уже о кластеризации, кешировании и прочей лобуде думать надо. Даже о том, как роутинг вообще от php отобрать и отдать специализированному более скорострельному решению. А не о том, что не по приколу ли в БД засунуть?


Это какому решению мона отдать? мона пример?

Edd.DragonНу а так, если делить мир на белое и черное, то большие файлы пхать и читать в БД сомнительная польза, а вот миллионы пузатой мелочи меньше размера пары минимальных блоков записи/чтения - это уже пошесть, от которой голова чешется. Интуитивно возникает желание как-то это все культурно сгрузить и скатекой прикрыть, чтобы не маячило =))

Сомневаюсь что в БД хранить хорошая затея, будет большая нагрузка на базу.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786490
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValerikТак это и не планируется хранить все на одном сервере.
По мере разрастания, и файловый сервер создавать новый и базу новую заводить.
Про то что в папочке хранить не более тысячи элементов это понятно, пока идея хранить файлы в папках по времени закачки каждый час новая папка.
Про то как отдавать пользователю файл или нет, может я чего-то не до понимаю? Пока идея такая серверу передается hash ID файла по нему в базе смотрим кому принадлежит этот файл и кто его запрашивает если у этого пользователя есть доступ к этому файлу то отдаем его.
1. по поводу если через файловую систему делать: А чем вам не устраивает вариант: array_merge(scandir(), scandir()....) ?
2. по поводу 100,000... ну не такие большие это цифры, вполне нормально должна справляються
Еще никто не отменял
а) шардинг
б) репликация
что позволит вам хоть 1000,000,000 файлов хранить.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786499
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю лучше подумать над более важными проблемами, например над горизонтальным масштабированием. 100.000 пользователей (ну теоретически с ваших слов) займут своими файлами не мало дискового пространства.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786503
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValerikСомневаюсь что в БД хранить хорошая затея, будет большая нагрузка на базу.
Это очень плохая идея, в данном случае, т.к. придется отдавать файлы уже используя интерпретатор, что повлечет за собой огромный расход памяти при большом числе долговременных соединений.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786541
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РенатValerikТак это и не планируется хранить все на одном сервере.
По мере разрастания, и файловый сервер создавать новый и базу новую заводить.
Про то что в папочке хранить не более тысячи элементов это понятно, пока идея хранить файлы в папках по времени закачки каждый час новая папка.
Про то как отдавать пользователю файл или нет, может я чего-то не до понимаю? Пока идея такая серверу передается hash ID файла по нему в базе смотрим кому принадлежит этот файл и кто его запрашивает если у этого пользователя есть доступ к этому файлу то отдаем его.
1. по поводу если через файловую систему делать: А чем вам не устраивает вариант: array_merge(scandir(), scandir()....) ?
2. по поводу 100,000... ну не такие большие это цифры, вполне нормально должна справляються
Еще никто не отменял
а) шардинг
б) репликация
что позволит вам хоть 1000,000,000 файлов хранить.

Вот я и хочу определиться в каком направление лучше двигаться.
Что быстрее и лучше будет работать, когда пользователей станет много.
Быстрее будет вытаскивать данные о структуре папок и файлах из файловой системы или же из базы все это вытаскивать?
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786543
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettПредлагаю лучше подумать над более важными проблемами, например над горизонтальным масштабированием. 100.000 пользователей (ну теоретически с ваших слов) займут своими файлами не мало дискового пространства.

С пространством думаю проблем не должно возникнуть у каждого пользователя будет свой лимит, при надобности будет выделяться дополнительный сервер.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786612
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valerikпри надобности будет выделяться дополнительный серверТогда построение дерева пользовательских файлов по ФС отпадает - слишком долгая и сложная операция при межсерверном взаимодействии.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786617
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleValerikпри надобности будет выделяться дополнительный серверТогда построение дерева пользовательских файлов по ФС отпадает - слишком долгая и сложная операция при межсерверном взаимодействии.

Не понял, в данном случае лучше будет дерево папок хранить в БД?
Я правильно вас понял?
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786635
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, правильно
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786659
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более того, одинаковых файлов будет много и хранить все дубликаты не имеет смысла. В случае с хранением структуры в ФС можно было бы конечно создавать вторую жесткую ссылку на файл, но в случае с распределенной системой у вас этого не получится.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786660
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и даже в случае с одним сервером дисковых устройств будет наверное больше, чем 1.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786675
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValerikЭто какому решению мона отдать?
Серверу на с++, который будет отвечать требованиям минимизации холостого хода и благодаря нативности кода, и благодаря отсутствию массы лишних действий.

Хотя в принципе связка nginx / memcached / fastcgi php, ну и грамотная балансировка нагрузки при наличии нескольких веб-серверов должны достаточно долго протянуть (зависит конечно от того, какими темпами стартап пойдет в гору).

А дальше в любом случае придется принимать в команду специалистов, которые имеют практику за плечами, чтобы иметь возможность удовлетворять растущие потребности быстрее чем они собственно растут ))

Это и к вопросу
авторВот я и хочу определиться в каком направление лучше двигаться.

А для начала вообще надо приучиться тот же php не нагружать лишними действиями. А то вот так обсуждаем, обсуждаем. А за кадром пишется код, который преследует удобство программиста в ущерб эффективности.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37786679
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати вот, давно интересно, есть у кого-нибудь реальный опыт использования подобных решений на Java:
http://gearman.org/index.php#how_does_gearman_work

Или они полезны только в переходные периоды, только когда есть необходимость объединить разноязычные компоненты, и только на время, пока этот зоопарк не будет переписан под что-то одно?
...
Рейтинг: 0 / 0
файло обмнеик.
    #37787044
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettБолее того, одинаковых файлов будет много и хранить все дубликаты не имеет смысла. В случае с хранением структуры в ФС можно было бы конечно создавать вторую жесткую ссылку на файл, но в случае с распределенной системой у вас этого не получится.

Хорошо. Где хранить структуру папок (в базе понятно).
Тогда другой вопрос, как хранить все эти деревья в базе что бы запросы с таблицей дерева папок быстро работал.
Я имею ввиду, вот у меня 100 000 пользователей, каждый их которых на создавал свое дерево папок, как будет работать MySQL при такой нагрузке?
И как лучше организовать структуру такой таблице, что бы пользователь мог быстро получить всю структуру своих папок? Понятно, что простым ID, PARENTID тут не обойтись что тогда?
...
Рейтинг: 0 / 0
файло обмнеик.
    #37787054
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем в базе хранить какие-то деревья?

Разве работа между сервером и юзером подразумевает это?

У юзера есть список файлов (возможно тегированный/категоризированный). Каждый файл имеет имя, дату, кол-во скачиваний и т.д. Для сервера каждый файл еще имеет путь, где он лежит.

Зачем этот список файлов юзера рассматривать как дерево?
...
Рейтинг: 0 / 0
файло обмнеик.
    #37787055
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valerik,

Хотите быстро и на мускуле? Тогда структуру папок можно хранить в серилизованном массиве, так сказать, в готовом к употреблению виде. Вы уверены, что именно мускуль будет использоваться в качестве СУБД и это есть лучшее/оптимальное решение?


Valerikкак будет работать MySQL при такой нагрузке?А уже известна нагрузка, есть структуры таблиц, тексты и планы запросов? Тогда этот вопрос лучше задать в профильном форуме :-)

PS: Слова "чтобы" и "насоздавал" пишутся слитно.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37787057
неТолик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valerik,

Обратите внимание на Webdav, как раз для ваших целей. Из плюсов этого протокола - можно обойтись без php и mysql.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37787066
неТолик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Роль БД играет файловая система
...
Рейтинг: 0 / 0
файло обмнеик.
    #37787284
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonЗачем в базе хранить какие-то деревья?

Разве работа между сервером и юзером подразумевает это?

У юзера есть список файлов (возможно тегированный/категоризированный). Каждый файл имеет имя, дату, кол-во скачиваний и т.д. Для сервера каждый файл еще имеет путь, где он лежит.

Зачем этот список файлов юзера рассматривать как дерево?

Не файлы а папки хранить как дерево в базе.
На сервере будут храниться файлы вообще в другом месте, под hash id название файла.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37787288
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неТоликValerik,

Обратите внимание на Webdav, как раз для ваших целей. Из плюсов этого протокола - можно обойтись без php и mysql.
А там можно организовывать общий доступ и открытый доступ к файлам и папкам?
Основанная идея, что бы пользователь мог делиться своими файлами с кем угодно.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37787332
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы можно было заводить пользователей в системе средствами php
И назначать права доступа на определенные папки и файлы по это конечно значительно облегчило задачу.
А так по любому придется хранить данные в базе данных, о том кому и какие данные доступны.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37787423
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValerikЕсли бы можно было заводить пользователей в системе средствами phpА почему нельзя то? У php есть интерфейс для вызова системных функций, а-ля командная строка.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37787448
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleValerikЕсли бы можно было заводить пользователей в системе средствами phpА почему нельзя то? У php есть интерфейс для вызова системных функций, а-ля командная строка.

Вы предлагаете поднять контролер домена?
...
Рейтинг: 0 / 0
файло обмнеик.
    #37788537
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettvkleпропущено...
А почему нельзя то? У php есть интерфейс для вызова системных функций, а-ля командная строка.

Вы предлагаете поднять контролер домена?

Вот я про тоже, что это накладно будет при 100 000 пользователей.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37788539
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так как лучше то будет?

Строить дерево папок в базе данных?
Потому что постоянно придется папки и файлы расшаривать, давать доступ определенным пользователям.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37788550
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValerikHettпропущено...


Вы предлагаете поднять контролер домена?

Вот я про тоже, что это накладно будет при 100 000 пользователей.Контроллер домена или какой-то другой способ реализации - не слишком важно на данный момент. Авторизация и аутентификация пользователей в любом случае будет. При большом количестве пользователей придется выделить наверно и не один сервер под это дело. Ага, и про резервирование этого центрального узла нервной системы не забываем. Хранение прав доступа тоже должно где то реализовываться. Будет ли это база на мускуле, оракле, или на файловой системе - в любом случае, будет какой то запрос вроде "юзер такой-то пытается получить доступ на [чтение|запись] к такому-то файлу. разрешить? (да|нет)". В файловых системах этот момент уже проработан, реализован и отлажен, в том числе, и на предмет ресурсожручести и надежности. Если есть готовая реализация, так почему бы ей не воспользоваться? Думаю, есть смысл рассмотреть этот вариант.
...
Рейтинг: 0 / 0
файло обмнеик.
    #37788682
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleValerikпропущено...


Вот я про тоже, что это накладно будет при 100 000 пользователей.Контроллер домена или какой-то другой способ реализации - не слишком важно на данный момент. Авторизация и аутентификация пользователей в любом случае будет. При большом количестве пользователей придется выделить наверно и не один сервер под это дело. Ага, и про резервирование этого центрального узла нервной системы не забываем. Хранение прав доступа тоже должно где то реализовываться. Будет ли это база на мускуле, оракле, или на файловой системе - в любом случае, будет какой то запрос вроде "юзер такой-то пытается получить доступ на [чтение|запись] к такому-то файлу. разрешить? (да|нет)". В файловых системах этот момент уже проработан, реализован и отлажен, в том числе, и на предмет ресурсожручести и надежности. Если есть готовая реализация, так почему бы ей не воспользоваться? Думаю, есть смысл рассмотреть этот вариант.

И сколько это будет стоить ?
...
Рейтинг: 0 / 0
файло обмнеик.
    #37788695
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValerikИ сколько это будет стоить ?Что именно?
...
Рейтинг: 0 / 0
файло обмнеик.
    #37788699
Valerik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleValerikИ сколько это будет стоить ?Что именно?

контролер домена
...
Рейтинг: 0 / 0
файло обмнеик.
    #37788712
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От забесплатно (на СПО) до стоимости минимум двух лицензий на виндовз сервер подходящей версии (для мелкомягких решений) или интерпрайз-линуксов - в зависимости от желания. Полноценный контроллер домена, который типа как в винде, в данном случае нафик не нужен. Хотя это и вполне рабочее решение, оно больше тянет на пушку для воробьев.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / файло обмнеик.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]