Re[6]: Переиспользование существующих методов
От: Stalker. Австралия  
Дата: 27.09.17 08:34
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Если это критический по времени запрос — ну так и делаем отдельный метод. Какие проблемы? Реально их будут ну максимум десятки штук.

проблемы такие, что получив от клиента запрос на убыстрение запроса, вместо элементарной настройки индекса мы вынуждены будем поставить ему НОВУЮ версию фасада

C>Что в этом плохого?

чем плохо размножение идентичного кода по массе клиентов? Может хотя-бы тем, что их все тестировать надо? Проблемой дублирования кода начали заниматься лет 50 назад уж наверное
Re[7]: Переиспользование существующих методов
От: Cyberax Марс  
Дата: 27.09.17 21:00
Оценка:
Здравствуйте, Stalker., Вы писали:

C>>Если это критический по времени запрос — ну так и делаем отдельный метод. Какие проблемы? Реально их будут ну максимум десятки штук.

S>проблемы такие, что получив от клиента запрос на убыстрение запроса, вместо элементарной настройки индекса мы вынуждены будем поставить ему НОВУЮ версию фасада
Если метод настолько критичен, что поиск по главному ключу вызывает непереносимый оверхед, то это стоит однозначно выделить в отдельный API. Такие контракты должны быть явно прописаны, вместо неявных "а вот если вы запросите только эти 3 поля, то запрос будет в 10 раз быстрее".

C>>Что в этом плохого?

S>чем плохо размножение идентичного кода по массе клиентов? Может хотя-бы тем, что их все тестировать надо? Проблемой дублирования кода начали заниматься лет 50 назад уж наверное
Есть 100500 разных клиентов? Не верю. Максимум 2-3.
Sapienti sat!
Re[8]: Переиспользование существующих методов
От: Stalker. Австралия  
Дата: 27.09.17 22:29
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Если метод настолько критичен, что поиск по главному ключу вызывает непереносимый оверхед, то это стоит однозначно выделить в отдельный API. Такие контракты должны быть явно прописаны, вместо неявных "а вот если вы запросите только эти 3 поля, то запрос будет в 10 раз быстрее".

в 10 раз не будет. А вот нагрузочное тестирование сможет провалить, или в продакшене начнет тормозить, попробуй это на стадии спецификации угадать

C>Есть 100500 разных клиентов? Не верю. Максимум 2-3.


серьезно? Их десятки в разных странах, я даже точное число не знаю
Re[9]: Переиспользование существующих методов
От: Cyberax Марс  
Дата: 28.09.17 02:11
Оценка:
Здравствуйте, Stalker., Вы писали:

C>>Если метод настолько критичен, что поиск по главному ключу вызывает непереносимый оверхед, то это стоит однозначно выделить в отдельный API. Такие контракты должны быть явно прописаны, вместо неявных "а вот если вы запросите только эти 3 поля, то запрос будет в 10 раз быстрее".

S>в 10 раз не будет. А вот нагрузочное тестирование сможет провалить, или в продакшене начнет тормозить, попробуй это на стадии спецификации угадать
Контракты, нарушение которых вызывает нефункционирование системы (провал тестов) должны быть как можно более явно прописаны. Неявные условности типа "шаг влево, шаг вправо — попытка к бегству, стреляю без предупреждения", — в итоге приводят к неподдерживаемой системе.
Sapienti sat!
Re: Переиспользование существующих методов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.09.17 15:59
Оценка:
Здравствуйте, Stalker., Вы писали:

S>Проблема сама в том, что если начинать делать методы более "общими", то это очевидно будет давить на производительность.


Совсем неочевидно.

S> Причем даже не случае различных параметров, когда новый метод практически неизбежен, но и в случае когда новому клиенты вместо одного поля сущности требуется отобразить другое. Если тянуть из базы ВСЕ поля


А зачем тянуть все поля? Операцию проекции уже отменили?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[5]: Переиспользование существующих методов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.09.17 16:20
Оценка:
Здравствуйте, Stalker., Вы писали:

S>есть таблица с 30 полями. Есть поиск по 3 полям, на выходе сущность с 6 полями. Делается индекс по 3 полям, оставшиеся 3 поля добавляются как included. Поиск по индексу сразу вернет сущность. Если тянем все 30 полей, то после поиска включается лукап остальных полей (что представляет собой ЕЩЕ один поиск уже по кластерному индексу тех-же самых данных), стоимость будет порядка 10-20% oт запроса. Это не считая логических чтений страниц всех этих полей, их транспортировки и прочего


Есть и другие моменты. К примеру блокировки. Если ты дернул из-за лишнего поля индекс, по которому кто то другой пишет с соотв. изоляцией, получишь блокировку.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.