Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Унификация запросов к разным БД, Имеет ли смысл 
:(
    Опции темы
everyone
  Дата 5.11.2013, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: нет
Всего: 4



Сейчас разрабатывается довольно крупный проект с точки зрения нагрузки и сложности БД.

Изначально было принято решение предельно придерживаться методологии написания запросов, при котором перенос с одной СУБД на другую обойдётся меньшей кровью.
Для унификации запросов используется набор интерфейсов к БД - обёртки для SELECT, UPDATE, WHERE, и тд...

С развитием проекта стало появляться большое количество запросов, которые проще, быстрее и производительнее было написать на нативном SQL.
И сейчас сложилось ощущение, что решение об унификации было бессмысленным.

Вопрос:

Интересуют именно истории проектов и опыт. Есть ли вообще смысл в думать о какой-то ещё БД, если выбрана для разработки, скажем, PostgreSQL?
И обратный - чем вы руководствуетесь, когда принимаете решение, поддерживать несколько БД?
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
Zloxa
Дата 5.11.2013, 16:25 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(everyone @  5.11.2013,  16:50 Найти цитируемый пост)
И обратный - чем вы руководствуетесь, когда принимаете решение, поддерживать несколько БД?

Обоснование таких решений лежит вне технической плоскости. Айтишники могут лишь оценить каковы тудозатраты на поддержание мультиплатформенности. Маркетологи должны оценить покроет ли профит эти издержки. К маркетологам же у меня у меня предвзятое отношение, что подпитывает  уверенность что их решение будет - да, окупится, но эта оценка, вероятнее всего, в ходе проверки практикой, окажется ошибочной. 

Цитата(everyone @  5.11.2013,  16:50 Найти цитируемый пост)
С развитием проекта стало появляться большое количество запросов, которые проще, быстрее и производительнее было написать на нативном SQL.

Здесь дело не только в запросах. Если у проекта достаточно высоки требования к согласованности данных, то для разных платформ их, скорее всего, придется обеспечивать по разному. Попытка унификации этого процесса, фактически означает вынос на прикладное звено обеспечения согласованности данных, замена нативно-датабазных функций собственным велосипедом. Вплоть до самопального обеспечения изоляции транзакций. И именно это, с моей точки зрения, очень трудоемко и, как правило, получается менее эффективно чем то же самое нативными средствами.

Простой тому пример - в постгре запись не блокирует чтение. А в МС - блокирует. Т.е. в постгре вполне нормальная операция - полное обновление справочника, скажем номенклатуры, в одной транзакции да при работающих кассах. Более того, в одной транзакции будет выполнять эту операцию прдпочтительнее. В MS же, при таком подходе, кассы, читающие обновляемый справочник встанут на блокировке до фиксации пишущей транзакции. Вполне может оказаться что для MS и постгра придется выбрать разную архитектуру для одного и того же решения, либо же придумать универсальную, которая будет, по факту, одинаково плохо работать как с МС так и с постгром.

Это сообщение отредактировал(а) Zloxa - 6.11.2013, 09:24


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
everyone
Дата 5.11.2013, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: нет
Всего: 4



Из сложившейся ситуации и выше сказанного я прихожу к выводу, что проект выходящий за пределы, скажем, возможностей ActiveRecord лучше писать на нативе.

Как исключение из правил мне приходит в голову только приложения-утилиты для работы с БД. И то...
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
Zloxa
Дата 5.11.2013, 16:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(everyone @  5.11.2013,  17:45 Найти цитируемый пост)
Как исключение

Любые кейвалсторы, не подразумевающие аналитики.
Любые системы, для которых временная(ну или перманентная) рассогласованность данных не критична.
Таких задач, в общем - не так уж и мало. :unkwn


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
everyone
Дата 5.11.2013, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: нет
Всего: 4



Да, раз зашёл разговор про кейвалсторы.
Если основная база PostgreSQL, я стараюсь использовать тип таблиц memory.
В некоторых проектах я подключал Redis. Особых преимуществ при подключении ещё одного хранилища(в данном случае Redis) я не нашёл. И возникает недостаток в качестве появления ещё одного синтаксиса работы с данными.

Не могу просто обосновать применение каких-то отдельных средств для хранения этих самых "рассогласованных данных".
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
Zloxa
Дата 5.11.2013, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



everyone, что-то мне подсказывает что у тебя есть желание похоливорить. Это же самое мне подсказывает что в этом топике холивара не получится. smile Для датабазников, которые тут трутся, слишком очевидны преимущества натива, а недатабазники сюда заходят лишь временами, набегами справить нужду - не более, и вряд ли они станут тут отстаивать свои заблуждения.

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

Это сообщение отредактировал(а) Zloxa - 5.11.2013, 17:24


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
everyone
Дата 5.11.2013, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: нет
Всего: 4



на холивар просто нет времени сейчас

на счёт кейвалсторов вопрос действительно возникает часто, и решение принимается как бог на душу положит
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
Fortop
Дата 5.11.2013, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Цитата(everyone @  5.11.2013,  15:50 Найти цитируемый пост)
Сейчас разрабатывается довольно крупный проект с точки зрения нагрузки и сложности БД.

Цитата(everyone @  5.11.2013,  15:50 Найти цитируемый пост)
Есть ли вообще смысл в думать о какой-то ещё БД, если выбрана для разработки, скажем, PostgreSQL?

По совокупности условий - ответ нет.
Достаточно лишь вменяемо отделить DBAL

Но вот над выбором конкретной БД стоит подумать хорошо и заранее


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
everyone
Дата 6.11.2013, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: нет
Всего: 4



Цитата

Достаточно лишь вменяемо отделить DBAL


Хотелось бы узнать подробнее о том, что вы называете вменяемостью.

В данном случае запрос формируется полностью на SQL.
DBAL используется при подготовке запроса(связывание переменных, проверка соответствия типов), при исполнении и выборке данных(различные фетчи). То есть довольно единообразные функции.

Даже работу с JSON стараемся перенести на сторону БД,  насколько это возможно. Абстрактный слой лепить сюда даже не пытались.

Цитата

По совокупности условий - ответ нет.


В этом я убедился ещё раз, спасибо.
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
Fortop
Дата 6.11.2013, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Цитата(everyone @  6.11.2013,  15:04 Найти цитируемый пост)
Хотелось бы узнать подробнее о том, что вы называете вменяемостью.

Чтобы ваши запросы не были раздерганы по сотням разных мест.
Сосредоточьте их все в моделях как минимум.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0726 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.