Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> организация таблиц для хранения текстов
hurt3  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 143
Пользователь №: 38653
На форуме: 3 года, 16 дней
Карма:




Всем привет. Всех с наступившим.
Вопрос. Существует система на php+mysql ,в ней могут регистрироваться множество пользователей. Эти пользователи могут добавлять в систему свои записи. От пары символов до текстов по объему равных Войне и миру.
Функционал системы -добавление записей, вывод записей конкретного пользователя, поиск по записям конкретного пользователя. Вывод всех пользователей, поиск по записям всех пользователей. Ориентировочно 1 пользователь будет добавлять в год от 500 текстов +-.

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

id | name | text | user_id

я бы не стал заморачиваться и мучить форум глупостями, но объем текстов предполагается разнообразный и заливать будут в том чисел очень большие тексты и количество текстов будет огромное. Не хотелось бы ошибиться изначально
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vital  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



int main(){printf("Hello World"); return 0;"}
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2476
Пользователь №: 20247
На форуме: 7 лет, 24 дня
Карма: 63




ну для огромных текстов есть тип TEXT и связанные с ним в бд, не говоря уже про просто BLOB.
И, кстати, что такое огромные текст?
Так-то война и мир в чистом виде занимает ~3мб(первая что нагуглил). Это совсем не много и легко вместится в стандартный LONGTEXT.

Ну а для текстов, которые больше LONGTEXT-а можно проверять размер и бить на части, и писать в соотв-ю табличку частями.


--------------------
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
hurt3  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 143
Пользователь №: 38653
На форуме: 3 года, 16 дней
Карма:




vital
т.е. фактически для больших текстов должна быть доп таблица?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vital  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



int main(){printf("Hello World"); return 0;"}
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2476
Пользователь №: 20247
На форуме: 7 лет, 24 дня
Карма: 63




Цитата (hurt3 @ 2.01.2015 - 20:18)
vital
т.е. фактически для больших текстов должна быть доп таблица?

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

НО.
Если не критично время ответа страницы (если 10-20-30ms не критичны для вас, а я думаю не критичны), как вариант попробуйте ваши тексты просто жать каким-нить зипом при записи, и при выводе распаковывать, а писать соотв-но просто в BLOB. Тексты очень хорошо и, я думаю, быстро жмутся. Вряд ли вы встретите текст, который сжатый в зип выйдет из размеров LONGBLOB. Но да, с точки зрения универсальности и надежности первый вариант правильнее.

А еще.
А вы уверены что вам надо mysql ?
Возьмите какой-нить Redis, у него максимальный размер строки вообще 512мб. Это пол-интернета в тексте. Да и удобнее работать вам будет, чем с SQL в данном случае, имхо.


--------------------
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
PMПисьмо на e-mail пользователюСайт пользователяICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
hurt3  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 143
Пользователь №: 38653
На форуме: 3 года, 16 дней
Карма:




vital
благодарю
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5954
Пользователь №: 1
На форуме: 10 лет, 11 месяцев, 10 дней
Карма: 126

Не пью :
22 года, 4 месяца, 11 дней


Цитата (vital @ 2.01.2015 - 21:27)
512мб. Это пол-интернета в тексте

В несжатом виде база сообщений нашего форума больше гигабайта. wink.gif


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 784
Пользователь №: 36058
На форуме: 4 года, 20 дней
Карма: 40




Цитата (vital @ 2.01.2015 - 22:27)
[QUOTE=hurt3,2.01.2015 - 20:18]...тип LONGTEXT (что вряд ли, война и мир короче в полтора-два раза)...

А если почитать доку? wink.gif


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
mvg  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 474
Пользователь №: 37895
На форуме: 3 года, 5 месяцев, 17 дней
Карма: 22




Цитата (hurt3 @ 2.01.2015 - 15:54)
id | name | text | user_id

можно id объединить с user_id сделав ключ составным по id и name. Вопрос
Цитата (hurt3 @ 2.01.2015 - 15:54)
как организовать таблицу хранения данных записей, какие ключи, индексы и прочие темы использовать?
упирается в вопрос: каков бюджет мероприятия?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vital  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



int main(){printf("Hello World"); return 0;"}
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2476
Пользователь №: 20247
На форуме: 7 лет, 24 дня
Карма: 63




Цитата (FatCat @ 2.01.2015 - 21:35)
Цитата (vital @ 2.01.2015 - 21:27)
512мб. Это пол-интернета в тексте

В несжатом виде база сообщений нашего форума больше гигабайта. wink.gif

Я люблю утрировать, да. Ну так-то база форума не связанный текст, и собрана годами, и блаблабла. Короче давайте лучше занудамоде=офф


--------------------
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vital  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



int main(){printf("Hello World"); return 0;"}
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2476
Пользователь №: 20247
На форуме: 7 лет, 24 дня
Карма: 63




Цитата (S.Chushkin @ 2.01.2015 - 22:01)
Цитата (vital @ 2.01.2015 - 22:27)
...тип LONGTEXT (что вряд ли, война и мир короче в полтора-два раза)...

А если почитать доку? wink.gif

Цитата
LONGTEXT Максимальная длина 4 294 967 295 символов

Для однобайтной кодировки 1 символ = 1 байт(можете проверить с помощью блокнота), для боговерного двухбайтового юникода 2 соответственно.

Ну разделите на 1024 несколько раз, приняв что размер войны и мир меньше 3х мб.
Где я не прав? Что не соотв-т доке?


--------------------
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5549
Пользователь №: 35718
На форуме: 4 года, 1 месяц, 28 дней
Карма: 170




Цитата (mvg @ 2.01.2015 - 23:16)
можно id объединить с user_id сделав ключ составным по id и name.

я бы этого не делал, и другим бы не советовал
id с user_id составной уникальный можно сделать


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 784
Пользователь №: 36058
На форуме: 4 года, 20 дней
Карма: 40




Цитата (vital @ 3.01.2015 - 00:45)
Где я не прав?

Быть Вам финансистом Партии и Правительства! ... во веселуха будет wink.gif biggrin.gif


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5954
Пользователь №: 1
На форуме: 10 лет, 11 месяцев, 10 дней
Карма: 126

Не пью :
22 года, 4 месяца, 11 дней


Цитата (vital @ 2.01.2015 - 23:41)
Короче давайте лучше занудамоде=офф

Не получится. Потому как топикстартер некорректно поставил вопрос. Ничего не сказано о целях хранения информации.
На примере движка этого форума, у нас существуют 3 параллельных способа хранения информации:
1. В БД текстовые поля - доступные поиску.
2. В gz-файлах. Для экономии дискового пространства. Для больших текстов. Есть возможность поиска средствами пхп.
3. Зазипованные в БД в поле blob. Для маленьких текстов. Потому что если их хранить в файлах, будут большие потери на кластеризации.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
mvg  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 474
Пользователь №: 37895
На форуме: 3 года, 5 месяцев, 17 дней
Карма: 22




Цитата (Valick @ 3.01.2015 - 00:29)
Цитата (mvg @ 2.01.2015 - 23:16)
можно id объединить с user_id сделав ключ составным по id и name.

я бы этого не делал, и другим бы не советовал
id с user_id составной уникальный можно сделать

id === user_id и тогда id | name | content, private key (id, name) будет состоять во 2 н.ф. что не так плохо. Если конечно это высоко нагруженный проект тогда надо по другому, но так как человек хочет что-то простое, для душу смастерить то в самый раз.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5549
Пользователь №: 35718
На форуме: 4 года, 1 месяц, 28 дней
Карма: 170




mvg, это сделает невозможным добавление двух текстов с одинаковым названием, плюс ко всему индексация по числам гораздо шустрее, чем по строкам. В итоге два минуса, против сомнительной экономии дискового пространства... не густо.
Вы правда хотите со мной поговорить о нормальных формах ? smile.gif


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса