Сап, програмач, прошу помощи. Решил написать свою мелкопарашу на пхп, но совершенно не умею в проектирование бд. Первое, что пришло на ум - это сделать три таблички (борды, треды, посты), но мне кажется, что это говно. Буду очень рад любой помощи. Выручай, двачик.
а что за каракули, зачем они тебе? там же нет аниме, ой, а где аниме?
>>169400628 (OP)"Тред" это частный случай "поста" без родителя (или родителем которого является борда).
>>169401580Можно создавать таблицу по имени борды, в которой будут все посты этой борды. Так?
>>169401820Нет, это ебанутость. Таблицы надо создавать под сущности. Создай таблицу "борды" с кодом и описанием, напримерid | code | descriptionИ пост напримерid | code | text | что-то ещеСоответственно пост будет связан с бордой по code, это пригодится еще для того, чтобы сразу из поста узнать к какой бороде он относится.Ну и таблицу с аттачами сделай.
>>169402321Бля, забыл добавить: в пост еще нужен id_parent. Если он NULL, то это тред, если нет, то это ответ в треде
>>169402508Я так и хотел сделать, ты помог с тредами, за что тебе огромное спасибо. Планировал создать таблицы под борду, под треды (но ты, благо, помог) и под посты, связав все, разумеется. А про >>169401820 это говно подумал из-за движков борд, код которых палил
>>169400628 (OP)Алсо, кому интересно, вот моя мелкопараша: crychan.com
>>169402978лол, только что был на ней, палил
>>169402911Его решение ужасно.Надо делать единую таблицу на посты.postsid | board | type | text | subject
>>169403038Так он так и хочет. Под посты, под борды, связав внешними ключами
У меня вот так вот.
>>169403212Лол, хотел найти разраба какой-нибудь мелкой САМОПИСНОЙ борды, чтоб совет спросить, а ты тут как тут. Как же тесен мирок
>>169403212> type varchar(100)> parent varchar(100)> board varchar(100)> ...> timestamp int(100)> userip varchar(100)Пизос.
>>169403301Ну, на связи человек, который сделал около 20 борд. Можешь спрашивать.>>169403360Это автоматом...
>>169403212type - типа пост или тред, как я понимаю?
>>169403468Да.
>>169402978А что будет если залить два файла с одинаковым именем? У тебя все файлы в одной директории хранятся что ли?
>>169403212>issageЗачем это хранить?
>>169403477Но зачем, если тред это просто пост без родителя?
>>169403212>intЕсть smallint, который занимает всего один байт.
>>169403547Это старый проект, я забросил разработку. Этот файл я грузил руками, для аттача файлы подписываются уникальными именами.>>169403580А как помечать сажецу в посте?
>>169403212
>>169403670>А как помечать сажецу в посте?А ты вообще понимаешь, как она работает и для чего нужна? Ее вообще никак помечать не надо.
>>169403670Если не сложно, можешь растолковать поле parent
>>169403713Я вакабу педале настраивал, щенок! Как работает sage и noko я прекрасно знаю. В БД она нужна, чтобы выводить КРАСНЕНЬКУЮ надпись возле поста.>>169403740Если это тред - то там 0, если ответ в тред, то ID Треда.
>>169403212> bump int(10)Это вообще пушка. Нахуя?
>>169403846Щенок! Это дата бампа в треде. Как ты предлагаешь ранжировать тред по бампам? Каждый раз искать последний пост треда?
>>169403821>Я вакабу педале настраивал, щенок!Поменьше гонору, по структуре твоей базы, ненужным полям и дурацким вопросам виден твой уровень.sage хранится в поле email.
>>169403907Накинулись, во двачеры. Благодарю, братик, очень благодарен за помощь
>>169404005ХАХАХАХАХ! Ты, видимо, вообще даун. Ну либо троллишь.Зачем костыли делать, маня плешивая? И зачем поле email в АИБ в 2018?
>>169404068>И зачем поле email в АИБ в 2018?>2к19>Не использовать авторизацию через vkПоссал на тебя, ты не понимаешь сути аиб.
2k18 таблички, хуярь все в документ.
>>169403907Ты хочешь сказать что ты наебашил вот эту хуйню >>169403212 без индексов и с ебанутыми типами, но беспокоишься о производительности при поиске последнего поста в треде?
>>169404153NoSQLмакака, съеби.
>>169404225>>169404282
>>169404246Ты, кажется, жопой читаешь тред.
>>169404405Нет ты
>>169402978> говно вместо нормального REST API> source map на продакшене> элементы с продвинутой логикой в папке componentsПиздец.
>>169400628 (OP)"Дай школьникам 45+ досок для решения всевозможных проблем, они всё равно будут срать в /b" - Аноним. Придумано 25/01/17 в 20:12 Копируем и засираем раковые треды.
>>169404497Ты только и можешь, что кукарекать. Сам-то ни на что не способен. Омежка и чмо. У тебя тёлка-то хоть есть?
>>169404497Ну давай, покажи как надо делать фронт.
>>169404282Ебать ты даун, как раз nosql и был придуман для таких случаев. Тут все просто и стрейджфорвард.
>>169404720> у тебя тёлка-то хоть есть?Спалился, жирдяй. Стареешь.
>>169404825Иди в кулачок дрочи, лошара быдлокодерская.
Спасибо, Двач. Оп
>>169403846>>169403580>>169403360Чёт ужасно забавляют эти гении. И это в 2к18, когда бесплатный говнохостинг ворочает миллионные таблицы в 50 столбцов за 0.2 секунды. С годами веб деградирует всё больше, вместо знающих людей всякие обмудки, которые нахватались отовсюду и тыкают в какие-то псевдопретензии, нихуя при этом не умея.
>>169404968И этого туда же >>169403618
>>169404968Дяди 40+ показывают соплякам как надо делать. Это сплошь и рядом, бро.
Ребяты, у меня есть что вам показать.Абу, ты больше не нужен, доиграешься блядь.
>>169404810>стрейджфорвард>стрейдж>форвардЕбанина, что же ты творишь.
>>169404968Твой посыл в том, что 2к18 нехуй заниматься оптимизацией или что?
>>169404892Я мимо, вообще-то, но ты меня заинтересовал. Мы вам перезвоним.
>>169404968Причем тут хранение-то вообще, даун? Вообще создай одно поле в таблице и хуярь json туда тогда уж сразу. Благо в современных СУБД даже для этого все средства есть сразу.
>>169405269Даун не знает про мои монго?
>>169404739Рабочий код мне показать не дадут, а педалить гитхаб в свободное время у меня нет желания. Но и стандарты REST, и паттерн компонент-контейнер не просто так придумали. И это я нашёл ровно за десять секунд просмотра сорцов, дальше смотрено желания нет, продолжай считать себя самым умным.
>>169405393Ясно.
>>169405393>Рабочий код мне показать не дадутА что случится? В жопу выебет начальник? Прямо в анус? Без вазелина?
>>169405208Мой посыл в том, что когда ты дома говнокодишь мёртвую борду на 5 человек, то абсолютно похуй в сколько символов у тебя варчар. Оптимизация это когда результат работы виден, а если смысла в этом нету то это не оптимизация а дрочево школьников. Результаты же будут видны только в проекте уровня большого интернет магазина и то скорее всего разница будет в районе 0.1 секунды при отработке 5-6 запросов разом.
>>169400628 (OP)>треды, постыЭто сводится к одной таблице.
>>169405626вот, вот. Пока надумал две таблички: борды да посты
>>169405625>абсолютно похуй в сколько символов у тебя варчарЯ с тобой не согласен, причем категорически. Если делать, то делать правильно и с самого начала.
>>169405379Какой же ты тугой, пиздец просто.
>>169405625Если тебе приходится прикладывать усилия и как-то дополнительно стараться чтобы сразу сделать правильно (ну ебаный в рот, ну нахуя использовать varchar для числовых значений???), то ты просто хуевый разработчик.
>>169405992>то ты просто хуевый разработчик.Двачую. И как не смешно его же фраза в данном случае лучше всего описывает его самого.>С годами веб деградирует всё больше, вместо знающих людей всякие обмудки, которые нахватались отовсюдуА потом и появляются всякие васяноподелки, которые при нихуя функционала требуют гигагерцы процессора и десятки гигов памяти.
>>169405844>Я с тобой не согласен, причем категорически.Это потому что ты вот тот нахватавшийся всякого долбаёб.>Если делать, то делать правильно и с самого начала.Расскажи мне почему int 10 это ахуеть правильно, а varchar 100 это ахуеть неправильно. Ещё расскажи как пизедц страшно потом поле в ИНТ преобразовать, наверное обосрутся все разом.>>169405992>Если тебе приходится прикладывать усилия и как-то дополнительно стараться чтобы сразу сделать правильноЛол, тебе типа не приходится? У тебя автоматом табличка генерится? Ты прям находу просчитывает сколько у тебя точно знаков значение будет, хера ты гений.>>169406160>А потом и появляются всякие васяноподелки, которые при нихуя функционала требуют гигагерцы процессора и десятки гигов памяти.>В вебе >гигагерцы процессора и десятки гигов памяти>В вебе Типичный ньювейв гений веба.
>>169406429>Расскажи мне почему int 10 это ахуеть правильно, а varchar 100Потому что больше места занимает, ВНЕЗАПНО. Но тебе то похер, у тебя сотни гигабайт диска в наличии.>Ещё расскажи как пизедц страшно потом поле в ИНТ преобразоватьЗачем преобразовывать потом, если можно сделать сразу правильно?>Ты прям находу просчитывает сколько у тебя точно знаков значение будет, хера ты гений.Для логических флагов там всего 1 знак будет, а изначально речь шла о логических полях (issage). А ты для этого varchar 100 используешь, хера ты дегенерат. Не оно, конечно, работать будет, но обоссать бы лицо тому, кто так сделает.
>>169406429>Ты прям находу просчитывает сколько у тебя точно знаков значение будет, хера ты гений.Я не гений, это просто ты олигофрен. Просто мне понятно что типы данных придуманы не просто так. Что например нет никакого смысла хранить ip в 100 байтах, когда это 4х байтовое число. Тем более что потом возможно мне понадобится какая-нибудь фильтрация по маски подсети. Как ты это будешь со строкой-то делать вообще?
Ничего себе вы тут написали, парни.Да, схема пиздец парашная. Но у меня есть оправдание: это автоматически сгенерированный база девтулзом.>>169403212-кун
>>169407080Ну и как хранить IP в mysql?
>>169407287varchar(15) - если хранить ip в виде строки.integer (4) - если хранить в виде набора из 4 байтов.
>>169407287Я же написал: в 4 байтном числе, int(4). В пхп для этого даже есть встроенная функция ip2long и long2ip для конвертации строки.
>>169407541Ему то откуда это знать, он varchar(255) херанет и все. Сейчас бы в 2d19 место экономить.
>>169407640Байточую. Сейчас бы байтоёбством заниматься в гостевой книге.
>>169406789>у тебя сотни гигабайт диска в наличии.Вот в с этого в голос. Расскажи пожалуйста сколько должно быть строк, чтобы я выиграл хотя бы 10 мегабайт выбери я инт вместо варчара.>Зачем преобразовывать потом, если можно сделать сразу правильно?Какая разница?>изначально речь шла о логических полях (issage)Не пиздика. Изначально речь шла о том, что долбаёбы типа тебя предлогают инт писать в виде смолинта, рассказывают, что поля в 1 бит занимают место и рассказывают какие они дохуя оптимизаторы. Вот о чём речь шла изначально.>>169407080>Я не генийТы не гений ты дебил, так как не в курсе что варчар 100 это не варчар, который всё хранит в 100 байтах. Впрочем что ещё от дегенератов ожидать, которые визжат то что краем уха услышали. Почитай вот на досугеhttps://stackoverflow.com/questions/1790514/how-much-real-storage-is-used-with-a-varchar100-declaration-in-mysql>>169407640Ещё и обоссал себя в двойне, лол. Вот так кретин. Ты если не сможешь в английский я тебе переведу даун.
>>169407741Борцуха, поставлю за тебя свечку в храме веба. Жи есть.
>>169407640>>169407701>>169407741Пиздос. Если для тебя хранить числовое значение в строке, то тест на дауна ты уже прошел. И опять. Причем тут байты хранения вообще? Я уже привел пример с фильтрацией ip по маске подсети. Как это делать со строкой блять? Есть и более тривиальные примеры: SELECT SUM(zalupa) FROM ... при том что zalupa varchar(100). Вот ты и обосрался уже. Хотя ты то наверное без зазрения совести захуячишь еще туда функций для конвертации. Ну а хули там?
>>169407965>смысла хранить ip в 100 байтах>Причем тут байты хранения вообще?Вот как мразь завертелась, а. Прям смотреть приятно. Ну так ты разобрался сколько варчар 255 весит? Много по сравнению с инт 10 или как? Жопу не сжёт ещё от долбоебизма?
>>169408107Похоже ты действительно как говорят пендосы mentally challenged. Какие противоречия в процитированных тобой фразах. Смысла хранить ip в 100 байтах (похуй, пусть это будет 15 байт, не суть) - нет. Но проблема в хранении ip в строке не в количестве занимаемых байт. Теперь понимаешь?Проблемы с простейшими математическими операциями над строками (!) ты изящно проигнорировал. Найс.
>>169408363>Смысла хранить ip в 100 байтах (похуй, пусть это будет 15 байт, не суть)Ахахахаха даже тут вот не смог не спиздеть, какой жалкий долбаёб. Тебе там чёрным по белому написано 6 ёбанных байт. Твоё ебучее поле занимает 6 ёбанных байт. Произнеси это. Не 100, не 20, не 15, а 6, а то что ты пытаешься свою жопу обосранную закрыть другой темой, так можешь не стараться. Твоя задача в любом случае решается отдельным полем в большом проекте или регуляркой в маленьком.
>>169408961Ребёнок, иди уроки делай. Продолжать этот спор я смысла не вижу, так как ты полный дегенерат.
А каковы позиции русских рэперов по данному вопросу?
>>169408961>>169409236Хватит сраться уже.
>>169409236Лол, ожидаемо. Мама спать погнала и гений оптимизации убежал остужать попку.>>169409296Больше не буду, пойду ужинать.
>>169408961> Хуячить регулярки и отдельные поля вместо того, чтобы просто использовать правильный тип данныхС тобой всё ясно. Ты буквальный даун. Олсо, даун, ты сам-то по своей ссылке ходил? Что ты несешь вообще? Какие 6 байт нахуй? Автор вопроса спросил сколько займет строка 'hello' (5 символов), ему ответили что 6 т.к. еще один байт уйдет на хранение длины строки. + это зависит от кодировки т.к. в utf8 символ может занимать от 1 до 3 байт. Ты понимаешь что ты обосрался даже здесь?Как ты строку '123.123.123.123' (15 символов) сохранишь в 6 байт? А? Дебилушка?
Я колхозно делал все треде в одну табличку. У каждого треда был boardName, при запросе на boardName выдавал треды с нужным значением. Работало и хуй с ним.
>>169409696Это норма. Называется денормализация данных.
>>169409243Позиции РУССКИХ РЭППЕРОВ по данному вопросу.Витя СД - сидит итт и активно поддерживает использование varchar(255).Павел Техник - пожелал лично расправиться с опом физически.Галат - предложил ОБОССАТЬ MYSQL-ПИДОРОВ, а не сидеть на жопе.Хованский - предлагает больно и унизительно ПОКАРАТЬ WEB МАКАК СВОЕЙ ЕЛДОЙ.Саша Скул - предложил использовать MICROSOFT ACCESS.СЛАВА КПСС ХРАНИТ МОЛЧАНИЕ.Шокк - высрал два невнятных твита.ОКСИМИРОН - УБОЖЕСТВО, ЗАКОМПЛЕКСОВАННЫЙ НЕДОНОСОК - БУКВОЕД.Большой Русский Босс - нихуя не понял, но осудил.
Писать свою борду это не опасно? А то можно ненароком поехавшим стать.
>Хованский>Русский репер
бамп
Если бы мне заказали подобную хуету за рубля за пол часа, то сделал бы 3 таблицы. Каталог тредов, словарь тематик и динамические таблицы тредов, которые дропаются на тысячном посте. Гетов не будет правда, ну да похуй.
>>169411069Наркоман.
>>169411600Ну а чего. Элегантно зато.
>>169411747Кроме дропания треда со всеми ответами тебе все равно еще придется загруженные файлы удалять.
>>169411878Ну папка по id треда, а посты все в этой же таблице. Вообще вся таблица - просто целиковый тред. Выводить легко и чистить всю эту порашу. База только мусорно выглядеть будет, ну это хуй с ним.
>>169412041После varchar(100)-куна твое решение кажется вполне адекватным.
>>169411069Ух бля, ты сделал мой день, содомит!Зачем динамические таблицы, если можно шардинг запилить? Ну или в крайнем случае, архивные посты(если они вообще нужны) переносить в отдельную таблицу или удалять?
>>169420107Слоуфикс. Перепутал шардинг с партициями. Спать хочу пиздец.
>>169420107Архивные вообще можно статикой хранить, уже пререндеренной. Изменений не будет, же.
>>169420386Если нужна какая-то статистика по всем постам в принципе в админ панели, то статика тут поможет разве что для отдачи клиенту дабы не создавать лишнюю нагрузку на субд.
>>169420583Кек. Да и просто треды можно делать статику, на каждый гет треда, а на пост инвалидировать/флашить кеш.да какая статистика, в жопу для борды которую пилит двачер с /б/?Владимир, это ты? Если это Владимир, сейчас будем дискутировать! Сейчас будет движ.
>>169420723О кешировании я даже говорить не стал, это итак должно быть понятно любому хоть немного компетентному разрабу, который пилит потенциальный хайлоад. Только вот вариаций кеширования масса, но ты описал усредненный.Нет, не Владимир
>>169400628 (OP)Это придумываем велосипед всем двачем тред? Погуглить не пробовал?
>>169420869Да я только так и умею, братишка.
>>169421131Инвалидация и запись в кеш - на бэкенде через очередь. Добавление постов - тоже через нее. Клиент должен работать исключительно с кешем, причем не писать в него, а только получать.Горячие данные(сводные данные по тредам) храним в эластике, который реиндексируется по требованию. Через него же осуществляем быстрый поиск, если нужно. Все это помещается в кеш, опять же, на бэкенде, и отдается клиенту. В итоге нагрузку на клиент имеем минимальную, дело за обработкой запросов и отдачей.
>>169404497>REST APIА зачем оно нужно?