Второе дыхание SQL. Техническое ессе.

User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Merle wrote:Ну нет. Я с трудом могу представить себе систему в которой надо одновременно вытягивать из хранилища больше нескольких сотен объектов.

Ну, к примеру, графики метеоданных за несколько суток, или за год, налогоплательщики города.
В моем представлении там, где обработка идет по 10-100 объектов, и база-то не нужна.
Дальше, все будет только хуже. Оптимист.
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

f_evgeny wrote:Ну, к примеру, графики метеоданных за несколько суток, или за год, налогоплательщики города. В моем представлении там, где обработка идет по 10-100 объектов, и база-то не нужна.

Обработка объекта в базе и вытягивание объекта из базы для обработки другой программой - это разные вещи. Современные СУБД тем и хороши, что отлично научились делать массовые операции внутри. Без накладных расходов на пересылку туда-сюда, когда в крайних случаях собственно пересылка занимала бы львиную долю времени и ресурсов. Умение свести обработку, необходимую приложению, к оптимальной серии высокоурвневых операторов манипуляции данными для которых в любой приличной СУБД есть высокоэффиктивная физическая реализация - важная составная часть искусства программирования приложений баз данных.
Cheers
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

tengiz wrote:
f_evgeny wrote:Ну, к примеру, графики метеоданных за несколько суток, или за год, налогоплательщики города. В моем представлении там, где обработка идет по 10-100 объектов, и база-то не нужна.

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

Ясное дело, что в эффективной системе должен быть грамотно выбрано разделение, что делаем в базе, а что - в приложении.
Моя мысль в том, что для больших объемов данных естественная форма работы с ними - таблица.
Дальше, все будет только хуже. Оптимист.
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

f_evgeny wrote:Моя мысль в том, что для больших объемов данных естественная форма работы с ними - таблица.

Мысль вполне понятна, возразить мне особенно нечего. Хотя с моего уровня внутренностей СУБД реальность видна несколько более абстрактро, чем простая прямоугольная таблица. Я конечно не говорю, что это абсолютно всё равно - о таблицах или иерархиях идёт речь. Но тем и хороша обработка транзакций - что хочешь в такой системе, то и хранишь. Гарантии по целостности и изоляции данных не зависят от того, что в этом мешке с байтами - XML, объект или строка таблицы. Собственно реляционность начинается уровнем выше и совершенно не зависит от того, как устроена подсистема хранения и обработки транзакций. Так уж получилось, что эффективные алгоритмы и выразительный (хоть и не без досадных недостатков) язык манипуляции данными удалось получить именно для прямоугольных таблиц. Но это же не значит, что для объектов и иерархий это невозможно?
Cheers
vc
Уже с Приветом
Posts: 664
Joined: 05 Jun 2002 01:11

Post by vc »

tengiz wrote:...Так уж получилось, что эффективные алгоритмы и выразительный (хоть и не без досадных недостатков) язык манипуляции данными удалось получить именно для прямоугольных таблиц. Но это же не значит, что для объектов и иерархий это невозможно?


"Many have tried, all have failed" ;)

VC
zVlad
Уже с Приветом
Posts: 15410
Joined: 30 Apr 2003 16:43

Post by zVlad »

f_evgeny wrote:..........
Моя мысль в том, что для больших объемов данных естественная форма работы с ними - таблица.


Эта мысль не совсем верна, точное совсем не верна. Нет никакой реальной связи между способом представления данных и способом их хранения а также ограничений на размеры, или связи размеров с моделью данных.

Когда появилась ДВ2 у ИБМ уже существовала иерархическая база данных IMS. На первых порах ДБ2 не считалась пригодной для построения больших баз данных с высокими требованиями к надежности и производительности в OLTP системах. По началу ДБ2 позиционировалась в DSS приложениях. Лишь к концу 80-х ДБ2 была достаточно улучшена чтобы конкурировать с IMS.

Что интересно приложения на IMS существуют и я думаю не плохо существуют и развиваются. Недавно ИБМ выпустила 9-ую версию IMS, и нет никаких намеков на сворачивание этих работ.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

zVlad wrote:
f_evgeny wrote:..........
Моя мысль в том, что для больших объемов данных естественная форма работы с ними - таблица.


Эта мысль не совсем верна, точное совсем не верна. Нет никакой реальной связи между способом представления данных и способом их хранения а также ограничений на размеры, или связи размеров с моделью данных.

Когда появилась ДВ2 у ИБМ уже существовала иерархическая база данных IMS. На первых порах ДБ2 не считалась пригодной для построения больших баз данных с высокими требованиями к надежности и производительности в OLTP системах. По началу ДБ2 позиционировалась в DSS приложениях. Лишь к концу 80-х ДБ2 была достаточно улучшена чтобы конкурировать с IMS.

Что интересно приложения на IMS существуют и я думаю не плохо существуют и развиваются. Недавно ИБМ выпустила 9-ую версию IMS, и нет никаких намеков на сворачивание этих работ.

Я скорее не про хранение данных, а про обработку. Ясное дело, что хранить с таким же успехом можно например список. Ведь и в реляционной базе данные не храняться в виде одной большой таблице. Но все кончается тем, чтобы по селекту выдать плоскую таблицу.
Пожалуй немного переформулирую свою мысль:
Таблица - это самый эффективный инструмент для обработки большого количества данных, из тех которым располагает человечество. Причем это справедливо не только для компьютеров, а вообще.
Дальше, все будет только хуже. Оптимист.
Sergey___K
Уже с Приветом
Posts: 13014
Joined: 10 Jul 2001 09:01
Location: VA

Post by Sergey___K »

Таблица - это самый эффективный инструмент для обработки большого количества данных, из тех которым располагает человечество.
Это не самый эффективный, это самый доступный и распространенный. И к ней можно все привести. Ну, и на бумаге, если ее не мять, только плоскую таблицу и сделаете. :)
ИМХО, таблица - самый "неестественный" способ хранения данных. Мир - он больше иерархический. Распластывая иерархию по таблицам и имеем, как следствие, канонический табличный JOIN вместо, ну, да пусть даже того же //a/b/c/[@att='val'].
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Sergey___K wrote:
Таблица - это самый эффективный инструмент для обработки большого количества данных, из тех которым располагает человечество.
Это не самый эффективный, это самый доступный и распространенный. И к ней можно все привести. Ну, и на бумаге, если ее не мять, только плоскую таблицу и сделаете. :)
ИМХО, таблица - самый "неестественный" способ хранения данных. Мир - он больше иерархический. Распластывая иерархию по таблицам и имеем, как следствие, канонический табличный JOIN вместо, ну, да пусть даже того же //a/b/c/[@att='val'].

- Я пишу про обработку, а не про хранение, если провести аналогию с предметным миром, то например можно представить себе три склада, на одном вещи свалены в кучу, на втором путь к каждой вещи - дерево, на третьем - полки с номерами, каждая вещь под номером. Где искать легче и быстрее?
На первом складе найти можно только случайно, на втором найти можно, но если надо найти несколько вещей, все время придется ходить по дереву, на третьем -находим нужные карточки в картотеке с дырочками и ходим по кратчайшим путям между полками с номерами нужных вещей.
- Мир бесконечен, разнообразие тоже, ресурсы - конечны. Необходимо упрощение. Талбица - это способ упрощения реальной картины мира, для того, чтобы упростить обработку этой картины.
Дальше, все будет только хуже. Оптимист.
zVlad
Уже с Приветом
Posts: 15410
Joined: 30 Apr 2003 16:43

Post by zVlad »

А вот еще есть базы данных IDMS и Adabas. В них поддерживаются множественные атрибуты и периодические группы, что гораздо полее полно соответствует "бумажным" таблицам. В обеих поддерживается SQL
Реляционные базы хороши, Евгений, но не тем что хороши для больших объемов, а тем что в них есть теория моделирования (нормализация) и что структура может быть модифицированна легко, и что-нибудь еще, но не способность управлять большими объемами, которой располагают и другие базы.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Adabas в настоящее время развалился на две ветки, одна поддеоживается SAP и называется SAP DB, другая вроде OpenSource но название я забыл

Обе стали чисто реляционными

Я работал с SAP DB, похож на облегченный Oracle.
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
potapych
Уже с Приветом
Posts: 1360
Joined: 02 Mar 2002 10:01

Post by potapych »

Dmitry67 wrote:Adabas в настоящее время развалился на две ветки, одна поддеоживается SAP и называется SAP DB, другая вроде OpenSource но название я забыл

Adabas D
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

f_evgeny wrote:
Sergey___K wrote:
Таблица - это самый эффективный инструмент для обработки большого количества данных, из тех которым располагает человечество.
Это не самый эффективный, это самый доступный и распространенный. И к ней можно все привести. Ну, и на бумаге, если ее не мять, только плоскую таблицу и сделаете. :)
ИМХО, таблица - самый "неестественный" способ хранения данных. Мир - он больше иерархический. Распластывая иерархию по таблицам и имеем, как следствие, канонический табличный JOIN вместо, ну, да пусть даже того же //a/b/c/[@att='val'].


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


Евгений, вы не поняли, Сергей приводил пример запроса на XPath, который выглядит намного более естественно для иерархий.

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

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

Представление мира при помощи простых таблиц вовсе не упрощает решаемую задачу. А как раз наоборот. Если выбраны атомы конструктора который плохо приспособлен для данной предметной области то для воспроизведения сложной детали потребуется больше элементов и они будут в очень сложных взаимосвязях.

Как пример приведу типовую задачу: Начальник/Подчиненный, Предприятие/Отдел. Если вы что то такое реализовывали в SQL, то знаете что представление и операции над такими объектами в иерархиях логичными прозрачными и естественными никак не назовешь.
Никакой разрухи нет. (с) Проф. Преображенский.
Palych
Уже с Приветом
Posts: 13724
Joined: 16 Jan 2001 10:01

Post by Palych »

Согласен со "Странник223".
Мне кажется что забвение древовидних баз было вызвано недостатком понятного человеку средства манипулировения данными, типа SQL. Теперь появился XPath & Co, и ето должно возвратить древовидные базы в игру.
С точки зрения хранения данных - думаю поначалу оптимизаторы возьмут на себя задачу по преобразованию деревьев в таблицы, пока не будет выдуман более еффективный способ хранения (если он вообще понадобится...)
Ведь если посмотреть на дизайн реальных приложений - даные практически всегда древовидные по природе, а задача дизайнеров - грамотно спроецировать дерево доменных обьектов на таблицы. Затем в дело вступают программисты, задача которых сделать обратное преобразование. Причем, будучи народом ленивым, они пытаются сделать етот процесс как можно более универсальным, навлекая гнев со стороны третьей стороны - админив....
Все ето порождает массу злобы и насилия в отношениях перечисленных сторон...
zVlad
Уже с Приветом
Posts: 15410
Joined: 30 Apr 2003 16:43

Post by zVlad »

http://www-306.ibm.com/software/data/ims/soap/

".......The IMS SOAP Gateway is an XML based connectivity solution that enables existing or new IMS applications to communicate outside of the IMS environment using SOAP to provide and request services independently of platform, environment, application language, or programming model.

The IMS SOAP Gateway enables the seamless exposure of IMS application assets as Web Services. The IMS SOAP Gateway, providing a relatively simple but extensible option, will provide the ability for non-WebSphere customers to re-use existing and to create new IMS-based business logic. One typical usage scenario of providing Web services with the IMS SOAP Gateway is to enable Microsoft .NET client applications or intermediary servers that submit SOAP requests into IMS to drive business logic transactions. ......"

Return to “Вопросы и новости IT”