|
|
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
День добрый! Был на собеседовани, и вот возникли вопросы, по таким заданиям: Задание 1: Товар перевозят из пункта A (страна,город) в пункт B (страна, город). Каждый товар закреплен за юзером(перевозчиком), и относится к определенной категории, а категория к разделу. Предложил такую реализацию: Сказали верно, но не подойдет по высоко-нагруженный проект. Слишком много джоинов, чтобы вытащить всю инфрмацию о заказе. Задание 2: Представить связь 1:n в реляционной БД. (пользователи - > роли) Предложил такой вариант: Не прокатило, проблема таже. Сослались что джоины на большом колличество данных положат бд. На вопрос, как же правильно делать, не ответили. Что для них высоконагруженный проект, и каков объем данных - так же уклонились. У меня нет опыта работы с высокопощемыми проектами. Подскажите, пожалуйста, где я ошибался. И как правильно надо было делать. Использоваль Mysql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 11:15 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
xslim, Во втором задании users_roles(id, roles.id, users.id, roles.name, users.name, users.surname). В первом аналогично. Но для высоконагруженных систем использовать мускул как-то по жлобски. Если вопрос стоит в бесплатной БД то как по мне более интересно пользовать постгрес, а для платных - оракл. Так что особо расстраиваться нестоит. особенно если люди немогут сказать что они подразумевают под высоконагруженностью. Если человек невидел в глаза таких систем, то ему и 1000 обращений к базе покажется чем-то сверхестественным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 11:33 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
xslimСказали верно, но не подойдет по высоко-нагруженный проект. Слишком много джоинов, чтобы вытащить всю инфрмацию о заказе. Я бы ответил, что если их продавцы сумеют находить столько заказов, чтобы сервер лопался от джойнов, то к критическому моменту они уже давно купят СУБД, для которой это не будет проблемой. xslimПредставить связь 1:n в реляционной БД. (пользователи - > роли) Точно 1:n? xslimУ меня нет опыта работы с высокопощемыми проектами. Подскажите, пожалуйста, где я ошибался. И как правильно надо было делать. Использоваль Mysql. Тут есть два разных вопроса: как правильно делать и как правильно отвечать на собеседовании. Тем, кто задаёт такие вопросы, правильно отвечать так: всё денормализировать, в БД - тупая свалка данных, вся логика на сервере приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 11:44 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
softwarerxslimСказали верно, но не подойдет по высоко-нагруженный проект. Слишком много джоинов, чтобы вытащить всю инфрмацию о заказе. Я бы ответил, что если их продавцы сумеют находить столько заказов, чтобы сервер лопался от джойнов, то к критическому моменту они уже давно купят СУБД, для которой это не будет проблемой. xslimПредставить связь 1:n в реляционной БД. (пользователи - > роли) Точно 1:n? xslimУ меня нет опыта работы с высокопощемыми проектами. Подскажите, пожалуйста, где я ошибался. И как правильно надо было делать. Использоваль Mysql. Тут есть два разных вопроса: как правильно делать и как правильно отвечать на собеседовании. Тем, кто задаёт такие вопросы, правильно отвечать так: всё денормализировать, в БД - тупая свалка данных, вся логика на сервере приложений. Ой, извините, ошибся. Конечно не 1:n, а многие ко многим. Мне очень интересно, как это правильно делать. Чтобы разобраться в теме и дальше не делать таких ляпов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 11:48 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
softwarer... всё денормализировать , ... Если задающий несмог ответить о какой нагрузке идет речь, то от этого слова он просто впадет в ступор. Ну или пригласит человека который в этом разбирается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 11:48 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
Злой Бобрxslim, Во втором задании users_roles(id, roles.id, users.id, roles.name, users.name, users.surname). В первом аналогично. Но для высоконагруженных систем использовать мускул как-то по жлобски. Если вопрос стоит в бесплатной БД то как по мне более интересно пользовать постгрес, а для платных - оракл. Так что особо расстраиваться нестоит. особенно если люди немогут сказать что они подразумевают под высоконагруженностью. Если человек невидел в глаза таких систем, то ему и 1000 обращений к базе покажется чем-то сверхестественным. Спасибо. Тоесть фактически все свелось к денормализации и дублированию полей в 3 roles.name, users.name, users.surname, для второго случая. Как-то думал иначе, казалось что наоборот надо все нормализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 11:52 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
Злой БобрЕсли задающий несмог ответить о какой нагрузке идет речь, то от этого слова он просто впадет в ступор. Я употребил это слово для отвечающего. Чтобы он, если не смог понять, к чему его подводят, мог при необходимости погуглить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 12:14 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
xslimСпасибо. Тоесть фактически все свелось к денормализации и дублированию полей в 3 roles.name, users.name, users.surname, для второго случая. Как-то думал иначе, казалось что наоборот надо все нормализовать. Ну это исходя из логики того что предложенное неустраивает. Хотя опять таки незная счетчиков нагрузки лепить сферического коня в ваккууме дело неблагодарное. Т.е. нужно четко определиться что первоочередное - скорость или рост базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 12:27 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
Злой БобрxslimСпасибо. Тоесть фактически все свелось к денормализации и дублированию полей в 3 roles.name, users.name, users.surname, для второго случая. Как-то думал иначе, казалось что наоборот надо все нормализовать. Ну это исходя из логики того что предложенное неустраивает. Хотя опять таки незная счетчиков нагрузки лепить сферического коня в ваккууме дело неблагодарное. Т.е. нужно четко определиться что первоочередное - скорость или рост базы. Я так понимаю, для веб сферы важнее скорость доступа? Хотя и рост базы тоже ведь быстр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 12:28 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
softwarerТут есть два разных вопроса: как правильно делать и как правильно отвечать на собеседовании. Тем, кто задаёт такие вопросы, правильно отвечать так: всё денормализировать, в БД - тупая свалка данных, вся логика на сервере приложений. При условии, что после такой беседы, вы все еще хотите у них работать... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 12:36 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
[quot xslim Ой, извините, ошибся. Конечно не 1:n, а многие ко многим. [/quot]тут без вариантов. Линковочная таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 12:50 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
xslimЯ так понимаю, для веб сферы важнее скорость доступа? Хотя и рост базы тоже ведь быстр. Для любой БД важен оптимальный баланс. Утверждать что в каком-то конкретном случае что-то важнее, незная всей поднаготной, я б нестал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 13:27 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
Злой БобрxslimЯ так понимаю, для веб сферы важнее скорость доступа? Хотя и рост базы тоже ведь быстр. Для любой БД важен оптимальный баланс. Утверждать что в каком-то конкретном случае что-то важнее, незная всей поднаготной, я б нестал. Спасибо большое. А есть ли материал или блогги полезные по этому поводу? Хочется подтянуть знания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 13:55 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
xslim, Если есть желание повысить уровень - ходите на семинары, тренинги, читайте статьи (в т.ч. и на этом сайте). В любом случае поиск выдаст вам с десяток полезных ссылок. Посмотрите на сайтах где обсуждается железо - там иногда проскакивают интересные вещи. На многих сайтах можно подписаться на рассылку, что немного сэкономит время при дальнейшем мониторинге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 14:57 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
Злой Бобрxslim, Если есть желание повысить уровень - ходите на семинары, тренинги, читайте статьи (в т.ч. и на этом сайте). В любом случае поиск выдаст вам с десяток полезных ссылок. Посмотрите на сайтах где обсуждается железо - там иногда проскакивают интересные вещи. На многих сайтах можно подписаться на рассылку, что немного сэкономит время при дальнейшем мониторинге. Еще раз спасибо !) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 15:31 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
On 17.02.2011 11:15, xslim wrote: > День добрый! Был на собеседовани, и вот возникли вопросы, по таким заданиям: Кто такие красивые картинки рисует ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 21:52 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
On 17.02.2011 11:15, xslim wrote: > Предложил такую реализацию: > Картинка с другого сайта. Всё вроде бы ничего, непонятно только, почему это User вдруг связан c Городом оказался. > Сказали верно, но не подойдет по высоко-нагруженный проект. Слишком много > джоинов, чтобы вытащить всю инфрмацию о заказе. Это ты у недо-БД-программистов каких=то собеседовался. Обычно как раз люди, не разбирающиеся толком в рел. СУБД, ужасно боятся JOIN-ов. Максимум тут их будет 7. Немного, ничего страшного нет. > > *Задание 2:* > > Представить связь 1:n в реляционной БД. (пользователи - > роли) > Предложил такой вариант: Это неверно. Это связь "многие-ко-многим" ты нарисовал. Перестарался. У тебя в первой модельке связь 1:N между countries и cityes, между users & orders, между sections & categories (и ещё парочка). > Не прокатило, проблема таже. Сослались что джоины на большом колличество данных > положат бд. Ну ламера, что взять. > На вопрос, как же правильно делать, не ответили. Что для них высоконагруженный > проект, и каков объем данных - так же уклонились. Они просто не умеют писать запросы и готовить РСУБД. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 21:59 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
On 17.02.2011 11:44, softwarer wrote: > Тут есть два разных вопроса: как правильно делать и как правильно отвечать на > собеседовании. Тем, кто задаёт такие вопросы, правильно отвечать так: всё > денормализировать, в БД - тупая свалка данных, вся логика на сервере приложений. Зачем такие дурные советы даёщь ? Если тебе задают вопросы в таком ключе, с таким подходом, надо бежать подальше от этой конторы. ПОтому что пойдёшь туда -- и будешь это денормализованное говно месить пока не уволишься. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 22:02 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
On 17.02.2011 11:48, xslim wrote: > > Ой, извините, ошибся. Конечно не 1:n, а многие ко многим. > > Мне очень интересно, как это правильно делать. Чтобы разобраться в теме и дальше > не делать таких ляпов Тогда ты правильно сделал всё. Только поле id в user_roles не нужны ЧАЩЕ ВСЕГО. Можно делать только когда есть ссылки на эту таблицу. Чаще всего их нет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 22:04 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
On 17.02.2011 13:27, Злой Бобр wrote: > Для любой БД важен оптимальный баланс. Утверждать что в каком-то конкретном > случае что-то важнее, незная всей поднаготной, я б нестал. Никакого балланса. Сначала -- нормальная БД. Потом -- её скорость работы. В условиях нормальной структуры. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 22:05 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
MasterZiv, авторСослались что джоины на большом колличество данных > положат бд. Ну да, иначе никто и не придумал бы денормализацию, звезды со снежинками и олап. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2011, 16:26 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
Экзамен - процесс более менее симметричный. Экзаменатор оценивает экзаменуемого. Экзаменуемый - экзаменатора (по качеству вопросов). Лично я после такого интервью отказался бы от мысли работать в этой конторе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2011, 16:29 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
В первом случае объединить таблицы countries с cities и sections с categories. Но countries и sections оставить и отдельными таблицами. Убрать связь users c cities. Дальше делаются грамотные запросы и индексы. Но либо вопрошающий был неграмотный, либо от вас ждал уточняющих вопросов по задаче. Количество строк в таблицах, количество обращений в секунду, и самое главное какие данные чаще всего и быстрее всего надо получать. Это если правильно отвечать для MySQL. А как вопрошающему отвечать, зависит от вашего настроя и его заблуждений. Если все денормализовать - вырастет объем данных - больше чтений с диска. А если "играют" на границе объема ОЗУ, то денормализация всего вообще на пару порядков скорость снизит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2011, 22:21 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
xslim, тут вопрос компромиса, а не идеальности воплащения теории БД. надо делать прямые связи с выходными таблицами, то есть жертвовать местом на диске ради скорости обработки, если утрировать, представь модель в которой у тебя, что бы вывести нужную информацию надо связать через джоины 30 таблиц , получится этим запросом придется серверу просматривать все 30 таблиц что бы найти связь, а если в каждой по 1 млн записей, тогда таким запросом ты сервер поставишь на колени, и убьешь время клиента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2011, 22:39 |
|
||
|
Вопросы с собеседования
|
|||
|---|---|---|---|
|
#18+
На мой взгляд, вцелом спроектировано все верно в обоих заданиях. Оптимизация должна лежать несколько в иной плоскости, не в ущерб целостности и нормализации. Для OLTP системы следует рассмотреть механизмы секционирования больших таблиц, а так же индексированные/материализованные представления, кот. и выступают в данном случае некоторым механизмом денормализации повышающем производительность, при этом оставляя целостность данных, их атомарность и нормализованность в прежнем виде. Следует подумать, как уже выше кто то заметил, о механизмах кеширования на стороне сервера приложений. Если речь идет о некоторой системе отчетности, то данные из OLTP должны переливаться в OLAP-хранилище Его как правило проектируют денормализованным. Люди которые бояться джоинов, в том числе в высоконагруженных системах, возможно не понимают разницу между внешним и внутренним соединением. Внутреннее соединение - дешовая операция. Более того, оно может даже повысить производительность, если будет использовано горизонтальное секционирование и таблицы будут разнесены по разным серверам в кластере. Если же эти люди в каждом запросе, с поводом и без, пишут outer join вместо join, а то и желают спихнуть все в одну таблицу или в XML в OLTP-системе, следует задуматься а стоит ли с ними работать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2011, 00:00 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=64&tid=1542293]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 376ms |

| 0 / 0 |
