Реляционная база данных для небольшой сети.

Status
Not open for further replies.

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
1. to Ognev
Маленькая поправка: MSDE - это Microsoft SQL Server Desktop Engine.

2. По Microsoft SQL Server 2005 Express Edition информации много на сайте MS:
http://www.microsoft.com/sql/editions/express/default.mspx

Продукт действительно очень удачный. Особенно удались (по сравнению с предыдущими версиями и конкурентами) средства развёртывания и сопровождения.
Для начала особенно интересно посмотреть Video Series: SQL Server 2005 Express Edition for Beginners (http://msdn.microsoft.com/vstudio/express/sql/learning/default.aspx).

Замечу, что вся прелесть решений Microsoft раскрывается при интеграции продуктов и принятии идеологии их использования. Например, приложение .NET + ADO.NET 2.0 + MSSQL Express (или нормальный SQL Server) = rulezz, то есть удобство разработки и сопровождения, надёжность и т.п. на высоком уровне. В противном случае всё не так хорошо, как могло бы быть.

3. MySQL лично мне неудобна, "певчая птичка с ярким оперением" нравится намного больше.

4. За PostgreSQL на Windows слова не замолвлю. Под Unix - совсем другое дело.

P.S. А вообще всё зависит от задач... Большинство задач, с которыми реально сталкивался, по большей части прекрасно решались в MS Access, хотя она и не сетевая (с возможностью элементарного перехода к SQL Server). А современные парадигмы создания распределённых систем не предполагают общения с сервером путём посылки SQL-запросов. Всё равно "слой абстракции данных / слой бизнес-логики / слой взаимодействия с пользователем".

P.P.S. Обсуждать реляционную алгебру и называть отношение таблицей - это прикольно...
 
Last edited by a moderator:

Ognev

ex-Team DUMPz
Joined
Aug 20, 2018
Messages
2,105
Reaction score
902
Age
25
ploki,
что бы посоветовал почитать по поводу "современные парадигмы создания распределённых систем", очень желательно в сжатом виде? )))

P.S. Честно скажу, что такое реляционная алгебра - не знаю, хотя зачаточное представление об алгебре с точки зрения теории множеств вроде имею ))) ... "мы все учились по немногу" ...
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
to Ognev
Сначала про реляционную алгебру (relation algebra, РА). Это одна из двух формальных систем (алгебраических систем, см. http://wazz-up.narod.ru/www/include/discret/algsysts.htm, там понятно, хотя и слишком лаконично; но можно взять учебник по высшей алгебре) для описания и манипулирования отношениями (relation) на кортежах (tuple), образующих логическую модель данных. Вторая система - реляционное счисление (или исчисление), оно эквивалентно РА. Отличия, если по-простому, в том, что выражения РА являются набором предписаний, а выражения счисления - набором описаний. Существует несколько различных вариантов формализации РА!
Язык SQL - по сути, язык реляционного счисления (с кучей дополнений), он является реляционно полным, то есть может описать любое отношение.

Для введения в предмет мне нравится книга Дейта:
Дейт К. Введение в системы баз данных, 8-е издание. — Вильямс, 2005. – 1328 с.
Произведения Кодда нравятся меньше - читать труднее, хотя и надо, так как первоисточник.

Кстати, знаменитые правила (или свойства) Кодда, также как, и правила Дейта, - это некоторая идеализация, которая очевидным образом сталкивается лбом с проблемами прозрачности и эффективности.
Рекомендую почитать знаменитые "манифесты", а затем комментарии, например http://citforum.oldbank.com/database/digest/date_3m_1.shtml и http://www.citforum.ru/database/digest/date_3m_2.shtml.

И ещё, никому не советую глубоко копаться в Википедии (IMHO). Там хорошо посмотреть, есть ли какое-либо понятие и про что оно. Но количесво ошибок при описании серьёзных и глубоких вопросов просто поражает (хотя есть приятные ислключения).



Теперь о "современных парадигмах создания распределённых систем".
Совсем в сжатом очень тяжело. Так что не пинайте сильно.

Во-первых, обсуждать парадигмы проектирования бессмысленно без знакомства с современной инфраструктурой. Поэтому, если кто не лазил (я думаю, что все уже лазили :) ), придётся залезть на http://www.w3.org/ и почитать стандарты на XML, SOAP, WSDL, RDF, OWL, XQuery, ..........., и т.п, затем залезть куда угодно (мест полно) и почитать про технологии сетевого взаимодействия программных компонентов (RPC, DCOM, CORBA, RMI, MSMQ, .NET Remoting, MPI, ...........). Без базового представления об инфраструктуре не обойтись.

Теперь собственно про парадигмы. Основная мысль - создание сервисно-ориентированных истинно распределённых информационных систем (с вертикальным и горизонтальным распределением) на основе компонентного программирования. Вертикальное распределение предусматривает обязательное выделение нескольких (минимум 4!) уровней абстракции (отсюда многослойные архитектуры). Горизонтальное распределние в основном связано с территориальным распределением и масштабированием, сводясь к параллельному выполнению кода и распределённому хранению данных (отсюда репликация и кэширование). Компонентные технологии для этого обязательны, чтобы бороться со сложностью, и предполагают использование чётких и прозрачных интерфейсов, согласование форматов данных и протоколов взаимодействия, а также удобство интеграции и высокий уровень повторного использования. Ещё одно ключевое слово - это виртуализация (представление любых ресурсов в нужном потребителю виде, независимо от потребностей других потребителей). ВИртуализация позволяет реально создавать истинно гетерогенные системы (например, GRID-технологии).


Некоторые источники:

Microsoft patterns & practices Developer Center:
http://msdn2.microsoft.com/ru-ru/practices/default.aspx

Software Architecture: Past, Present and Future:
http://msdn2.microsoft.com/en-us/skyscrapr/bb426891.aspx

Поддержка разработки распределенных приложений в Microsoft .NET Framework:
http://www.intuit.ru/department/se/msfdev/


Некоторая литература:
1. Э. Таненбаум, М. ван Стен. Распределённые системы. Принципы и парадигмы. — СПб.: Питер, 2003. – 877 с.
2. Л. Басс, П. Клементс, Р. Кацман. Архитектура программного обеспечения на практике. — Питер, 2006. – 576 с.
3. Бертран Мейер. Объектно-ориентированное конструирование программных систем. — Русская Редакция, 2005. – 1204 с.
4. Хоп Г., Вульф Б. Шаблоны интеграции корпоративных приложений. — Вильямс, 2006. – 672 с.
5. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приёмы объектно-ориентированного проектирования. Паттерны проектирования. — Питер, 2001. – 368 с.

Источников очень много, где-то наверняка есть и красивое сжатое изложение. Кто найдёт - тоже буду признателен.

P.S. Перечитал - понял, что получился оффтопик, но ведь в ответ на вопрос!

P.P.S. Может, новую тему сделать - типа "Доступ к данным в программных продуктах"?
 
Last edited by a moderator:

Ognev

ex-Team DUMPz
Joined
Aug 20, 2018
Messages
2,105
Reaction score
902
Age
25
ploki,

Спасибо за ответ. На счет
P.S. Перечитал - понял, что получился оффтопик, но ведь в ответ на вопрос!
будем считать, что это теоретическое дополнение, которое необходимо для понимания сути вопроса ))) Ну и раз уж "пошла такая пьянка", то может продолжим?

Почитал про алгебру ... еще раз убедился, что я не математик ))) Вот не понял, например, чем таки операция отличаются от отношения. По мне, так одно и тоже - сопоставление одному элементу множества другого ... Единственный вариант, что может быть отношение симметричная операция, т.е. из того, что a в отношении с b, следует, что b в отношении a, тогда как для операций вообще это не так. Но все-равно, в этом случае, отношение - частный случай операции (операция, обладающая определенной симметрией) и не понятно их (операций) выделение в отдельный класс.
Теперь, я не совсем понимаю (а точнее совсем не понимаю ))) ) что с точки зрения РА собой представляет БД. Бог с ними, с терминами, это вопрос договоренности, интересует суть. Смутно ощущаю, что элементом множества (или подмножества? или ?) является конкретное значение конкретного поля конкретной таблицы (?). И что есть таблица - подмножество, множество? Прозвучал термин - отношение. Т.е. таблица - это набор элементов, находящихся в неком отношении (которое наглядно можно представить в виде таблицы). Если так, то что тогда есть сама БД и зачем в ней выделять таблицы? Или их выделение есть некое упрощение, которое все и запутывает? Смутно еще ощущаю, что не могу четко разделить то, что можно назвать логической структурой БД (структура таблиц и связей между ними) и конкретное наполнение этой логической структурой данными. Понимаю, что эти вопросы, возможно, выглядят смешными, но ... они есть )))
С остальным ... поверхностно вроде понятно ... что надо читать и думать ))) Будем стараться.

P.S.
P.P.S. Может, новую тему сделать - типа "Доступ к данным в программных продуктах"?
Всеми руками за! Думаю, многие были бы длагодарны.
 

igor_52

Member
Joined
Mar 31, 2004
Messages
40
Reaction score
6
Довольно долгое время работал с Firebird. Недавно, в силу обстоятельств, попробовал Oracle (10g XE). Теперь больше не буду работать ни с какой другой базой!!! Кстати, Oracle 10g XE бесплатный, с ограничением на размер базы (4Гб) и используемой памяти (1Гб). Таких возможностей нет больше ни в какой другой СУРБД! Рекомендую всем!!!
 

Guard

Premium
Joined
Mar 5, 2004
Messages
58
Reaction score
2
Age
50
Location
Тула
Довольно долгое время работал с Firebird. Недавно, в силу обстоятельств, попробовал Oracle (10g XE). Теперь больше не буду работать ни с какой другой базой!!!
Может не в тему, но не мог бы ты расшифровать преимушества Oracle, с твоей точки зрения. Я думаю это было бы полезно для всех. Спасибо :)
 

igor_52

Member
Joined
Mar 31, 2004
Messages
40
Reaction score
6
С моей точки зрения и по сравнению с Firebird:
1. Очень понравилось использовать PL/SQL. В одном компоненте TSQL можно написать обработку, для которой в Firebird требовалось объединять несколько SQL-запросов.
2. Не блокирует данные при транзакциях (сам проверял). В Firebirde часто попадал на deadlock.
3. Работает очень быстро (особенно под Linux-ом).
4. В инете документации по ораклу - вагон.
Это если не копать вглубь.
 

Ognev

ex-Team DUMPz
Joined
Aug 20, 2018
Messages
2,105
Reaction score
902
Age
25
igor_52,
а что можно сказать про сложность\легкость установки и сопровождения этой версии Oracle под Windows?

P.S. Guard, ну почему же не в тему )))
 

igor_52

Member
Joined
Mar 31, 2004
Messages
40
Reaction score
6
Опять повторюсь - работаю с Ораклом недавно, не гуру, перешел с Firebird в силу обстоятельств. Особых сложностей не заметил - куча документации в интернете. Поставился 10gXE легко - запросил только каталог установки. Есть Web-интерфейс для администрирования. Много компонентов под Delphi для разработки приложений. Сейчас переписываю проекты с FB на Оракл.
 

Ognev

ex-Team DUMPz
Joined
Aug 20, 2018
Messages
2,105
Reaction score
902
Age
25
Вытащил в шапку темы некий итог наших обсуждений. Если есть смысл что-то туда добавить, пишите или здесь или в личку.
 

Ognev

ex-Team DUMPz
Joined
Aug 20, 2018
Messages
2,105
Reaction score
902
Age
25
Gerasoft,
желательно поподробнее. Тема все же не о том, что есть вообще, а что в этом самом есть хорошее и плохое )))
 

Gerasoft

Member
Joined
Jul 19, 2006
Messages
6
Reaction score
0
Location
Moscow
Подробнее пока не могу:мы у себя этот сервер ещё не развернули. Как будет первый экспириенс - сообщу!
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
to Ognev
А почему Microsoft Access получился в шапке бесплатным? Microsoft явно будет против.

Я бы вообще разделил по-другому:
1. Бесплатные:
1.1. С открытым кодом
1.2. С закрытым кодом
2. Платные

А для бесплатных просто написать, от чего унаследованы/отпочковались.

P.S. Microsoft Access позволяет то, что ни одна из других СУБД (известных мне) не позволяет с такой лёгкостью: быстро создавать законченные и достаточно эффективные бизнес-приложения абсолютно без использования сторонних средств, используя только то, что входит в Microsoft Office. VBA при правильном применении - сила! А InfoPath для обработки ввода/вывода - просто песня.
Проблемы с масштабированием при необходимости решаются привлечением SQL Server'а и Sharepoint'а (но это уже отдельная песня).
 

igor_52

Member
Joined
Mar 31, 2004
Messages
40
Reaction score
6
Согласен по поводу Access-а. Но, по моему, не стоит делить бесплатные базы - по большому счету совсем не важно, какой у нее код, открытый или закрытый.
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
to igor_52

Не согласен, для встроенных СУБД - очень важно.
Для остальных неважно, если решается конкретная задача. А если требуется на много лет связать себя некоторым инструментом, то тоже может оказаться важно. Я уже нарывался на редисок, которые могут исправлять глюк, который сам исправляешь в течении часа (если есть код!), по нескольку лет. Но ещё важнее бывает (хотя и редко) другое - понимание проектных решений и исследование эффективности (профилирование).

Но разделение может действительно лучше сделать не по официальной открытости:

1. Бесплатные:
1.1. В исходных кодах
1.2. Бинарники
2. Платные
2.1. В исходных кодах
2.2. Бинарники
 
Last edited by a moderator:

igor_52

Member
Joined
Mar 31, 2004
Messages
40
Reaction score
6
Для встроенных СУБД - возможно... Но это достаточно специфично: я, допустим, не хочу ковыряться в кодах, это должен делать разработчик продукта. Пусть каждый занимается своим делом. И, опять же, почему ты берешь СУБД с открытым кодом? Не дают денег на другую? И ты становишься затычкой во всех узких местах...
P.S. Не конкретно Ploki - сам был в таком положении.
 

Ognev

ex-Team DUMPz
Joined
Aug 20, 2018
Messages
2,105
Reaction score
902
Age
25
ploki,
igor_52,
Access в бесплатные попал по следующей причине. Я имел ввиду, что для ее (БД) функционирования не требуется сервер, осуществляющий работу с БД. Платной является только сама оболочка Access, которая, вообще говоря, не обязательна, если будет написан свой интерфейс. Так куда таки Access стоит отнести?

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

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
to Ognev

Мыслю про Access понял. Слегка поправлю. Сервер (то есть СУБД) всё равно требуется в любом случае. К тому же Access - не просто оболочка, то есть это не просто построитель интерфейса с пользователем для другой СУБД. Но действительно, частью ядра Access является database engine "JET", который абсолютно бесплатен.
Последняя нормально доступная версия JET - Microsoft Jet 4.0 Database Engine sp 8. Если надо, могу выложить полный комплект под все системы с дополнениями.

Также бесплатны библиотеки доступа к данным DAO, ADO и ADO.NET.

Access 2007 может использовать (и по умолчанию использует) новый формат БД - accdb (раньше был mdb). При этом сама Microsoft называет новый движок Office-specific version of Jet - Access Database Engine (что собственно нового).
Для доступа к новому формату (и к другим форматам Office 2007) выпущен бесплатный 2007 Office System Driver: Data Connectivity Components:
http://www.microsoft.com/downloads/...36-8C28-4598-9B72-EF94E038C891&displaylang=en . Он включает как OLEDB, так и ODBC провайдеры.
 
Status
Not open for further replies.
Top