Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Алгоритм работы с БД
Форумы портала PHP.SU » » Работа с СУБД » Алгоритм работы с БД

Страниц (1): [1]
 

1. Yan9 - 07 Сентября, 2015 - 00:56:37 - перейти к сообщению
Здравствуйте! Хочу реализовать возможность добавления пользователями данных (картинки и текст), как это сделано в Википедии.

Вопрос в том, как это лучше сделать? У меня 2 варианта:
1. Сделать две БД, в первой сделать таблицу, в которую будет попадать информация от пользователей. Затем я эту информацию проверяю и переношу во вторую БД в нужную таблицу, из которой потом выводится информация на сайт.
2. Одна БД, но данные от пользователей вносятся в одну таблицу, я эти данные проверяю и переношу их в другую таблицу, из которой потом выводится информация на сайт.

И еще вспомогательный вопрос:
Картинки от пользователей лучше хранить в самой таблице либо в папке, а в таблице хранить путь к этим картинкам?

Спасибо!
2. DlTA - 07 Сентября, 2015 - 01:25:50 - перейти к сообщению
странно что нет варианта когда юзверь вносит данные которые после модерации допускаюстя к выводу

картинки в базе лучше не хранить, они там много места занимают, и базу допонительно кладут
3. Yan9 - 07 Сентября, 2015 - 01:29:41 - перейти к сообщению
DlTA пишет:
странно что нет варианта когда юзверь вносит данные которые после модерации допускаюстя к выводу

картинки в базе лучше не хранить, они там много места занимают, и базу допонительно кладут


Тоже склонялся хранить путь к картинкам. Подскажите как эту модерацию реализовать? Я вот думал именно таким путем. Оказывается делается это не так?
4. DlTA - 07 Сентября, 2015 - 02:14:36 - перейти к сообщению
Yan9 пишет:
Подскажите как эту модерацию реализовать?

какой то очень странный вопрос

дополнительное поле в таблице, 1/0 модерирован/немодерирован
(Добавление)
Yan9 пишет:
Тоже склонялся хранить путь к картинкам

а разве фотки будут храниться в разных папках??
обычно достаточно имени файла
5. Yan9 - 07 Сентября, 2015 - 12:23:47 - перейти к сообщению
DlTA пишет:
Yan9 пишет:
Подскажите как эту модерацию реализовать?

какой то очень странный вопрос

дополнительное поле в таблице, 1/0 модерирован/немодерирован
(Добавление)
Yan9 пишет:
Тоже склонялся хранить путь к картинкам

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


Я так и подумал, чтобы добавить еще одно поле в таблицу, просто новичок и думал, что может есть какой-то другой способ, все меняется быстро и я многого могу не знать.

Картинки в одной папке, да, я знаю, там просто.

Спасибо!
6. Panoptik - 07 Сентября, 2015 - 14:33:09 - перейти к сообщению
учтите что очень много картинок в одной папке >1000 - это очень плохо. так что возможно нужно будет их поделить по подпапкам
7. DlTA - 07 Сентября, 2015 - 14:57:42 - перейти к сообщению
Panoptik пишет:
учтите что очень много картинок в одной папке >1000 - это очень плохо

чем?
8. Panoptik - 07 Сентября, 2015 - 18:10:41 - перейти к сообщению
сканирования файлов замедляется как при работе с файловым менеджером так и для программ.
и если вдруг вам понадобиться руками лазать в такую папку, вы будете не в восторге
(Добавление)
http://stackoverflow[dot]com/questio[dot][dot][dot]t-in-a-directory
9. Yan9 - 07 Сентября, 2015 - 22:27:18 - перейти к сообщению
Panoptik пишет:
сканирования файлов замедляется как при работе с файловым менеджером так и для программ.
и если вдруг вам понадобиться руками лазать в такую папку, вы будете не в восторге
(Добавление)
http://stackoverflow[dot]com/questio[dot][dot][dot]t-in-a-directory


Спасибо за информацию, даже не знал о разных файловых системах. Но в той ссылке, которую вы сбросили указано, что в одну папку можно помещать миллионы файлов. Или я что-то не понял?
10. Panoptik - 08 Сентября, 2015 - 09:52:39 - перейти к сообщению
если вы внимательно прочитали все ответы то среди них есть например такие
http://stackoverflow[dot]com/a/21805580/2110663 где указано что в папке в которой 10к файлов поиск происходит более чем в 10 раз медленнее чем в папке в которой 1к и соответственно если меньше то еще быстрее
ну и надеюсь вы прочти то что при количестве овер 32к некоторые программы перестают работать (как то ls)

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

ну и если ближе к делу то достаете md5 hash из файла или названия файла к примеру файл называется test.jpg делаем из него мд5 хеш 0412c29576c708cf0155e8de242169b1
берем первые 2 буквы хеша и создаем с таким названием папку. то есть
04. соответстенно в базу запишите относительный путь вместе с названием файла 04/test.jpg
при таком алгоритме у вас получится размещать файлы примерно одинаково распределенными по 16^2 = 256 папкам это как раз <1000
если файлов намного больше и в каждой папке у вас будет получаться (или теоретически вы предполагаете) >1000 файлов, создаете еще один подуровень по тому же принципу, то есть берем следующие 2 буквы хеша 12.
соответственно создаете папку внутри 04 и уже внутри папки копируете свой файл 04/12/test.jpg - этот же путь будет записан в базу
файлы в идеале тоже лучше переименовывать в latin-digital формат чтобы в файловую систему не попадали всякие юникод символы, но это уже другая тема
а по сути у вас получится 256*256 = 65к файлов относительно равномерно распределенных по файловой системе и доступ к ним будет происходить с приемлемой скоростью.
можно увеличивать иерархию еще на уровень, больше наверное смысла не будет так как такое количество файлов наверняка не влезет на ваш диск, но теоретически можно
11. Yan9 - 08 Сентября, 2015 - 13:09:51 - перейти к сообщению
Panoptik пишет:
если вы внимательно прочитали все ответы то среди них есть например такие
http://stackoverflow[dot]com/a/21805580/2110663 где указано что в папке в которой 10к файлов поиск происходит более чем в 10 раз медленнее чем в папке в которой 1к и соответственно если меньше то еще быстрее
ну и надеюсь вы прочти то что при количестве овер 32к некоторые программы перестают работать (как то ls)

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

ну и если ближе к делу то достаете md5 hash из файла или названия файла к примеру файл называется test.jpg делаем из него мд5 хеш 0412c29576c708cf0155e8de242169b1
берем первые 2 буквы хеша и создаем с таким названием папку. то есть
04. соответстенно в базу запишите относительный путь вместе с названием файла 04/test.jpg
при таком алгоритме у вас получится размещать файлы примерно одинаково распределенными по 16^2 = 256 папкам это как раз <1000
если файлов намного больше и в каждой папке у вас будет получаться (или теоретически вы предполагаете) >1000 файлов, создаете еще один подуровень по тому же принципу, то есть берем следующие 2 буквы хеша 12.
соответственно создаете папку внутри 04 и уже внутри папки копируете свой файл 04/12/test.jpg - этот же путь будет записан в базу
файлы в идеале тоже лучше переименовывать в latin-digital формат чтобы в файловую систему не попадали всякие юникод символы, но это уже другая тема
а по сути у вас получится 256*256 = 65к файлов относительно равномерно распределенных по файловой системе и доступ к ним будет происходить с приемлемой скоростью.
можно увеличивать иерархию еще на уровень, больше наверное смысла не будет так как такое количество файлов наверняка не влезет на ваш диск, но теоретически можно


Да, я комментарии не читал, все верно.
Спасибо за информацию, буду знать!

 

Powered by ExBB FM 1.0 RC1