|
|
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
EmeryИмеется в виду ширина полей в байтах. Значения могут быть либо пустыми (символ «пробел»), либо символом нуля («0»), так как поля даты модификации строковые. Впрочем, символ с кодом NULL тоже допускается. Предлагаю пойти дальше. Первая таблица — метаинформация о полях (названия, ключи, типы данных и длина). Вторая таблица — содержимое, но сами значения в ней не храняться. Третья таблица состоит из трех полей, ключа на вторую таблицу, порядкового номера и однобайтового поля. Для получения значения поля нужно извлечь все подчиненные записи из третьей таблицы и объединить их. Т.е. можно забыть о нерациональном использовании пространства, все данные будут занимать именно столько байт, сколько они занимают. Как идея? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 11:52 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Emery Тогда может быть Вы знаете и их решения :) ? Почему бы Вам не поделиться? Только этим и занимаюсь:) Emery Без УК очень тяжело полноценно реализовать предлагаемую модель хранения данных. Поэтому приходится говорить и об универсальном клиенте. Что-то Вы запутываете простой вопрос:) Реализуйте для начала предлагаемую модель хранения данных, абсолютно полноценно, на СПЕЦИАЛИЗИРОВАННОМ клиенте. Модель хранения будет реализована абсолютно полноценно:) Что здесь очень тяжелого? Emery Я под «бизнес-приложениями» понимаю, в данном контексте, программирование учета на предприятии. Видимо Вы подразумеваете что-то другое. Думаю, надо обращать внимание на контекст разговора также. Конечно! И то, о чем я Вам говорю, имеет отношение к любым приложениям. Не нужно их программировать. Или Вы считаете, что модель, подходящая для парикмахерской и авиационного завода (это два предприятия, на которые Вы ориентируете свою технологию), не подойдет ни для библиотеки, ни для "пионерского" лагеря?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 11:58 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
iscrafmВы путаете понятия. Общественное мнение здесь не причем. Самоубийц просто, обычно, пытаются отговорить не делать откровенную глупость. Если аргументов не хватает, прибегают к сильным словечкам. Зачем использовать запрещенные приемы? iscrafmEmeryБез УК очень тяжело полноценно реализовать предлагаемую модель хранения данных. Поэтому приходится говорить и об универсальном клиенте. следующим шагом будет разговор о специализированном компьютере, необходимом для реализации какой-то модели данных , представляющей собой какую-то, странного вида таблицу в БД, для работы с которой требуется какой-то универсальный клиент, на роль которого не подходит не один из тысяч существующих клиентов. Жду с нетерпением. EAV придумали до меня. Я всего лишь предлагаю его конкретную реализацию, не более. «Тысячи существующих клиентов» завязаны на свои движки БД. Я предлагаю «развязать» хотя бы один из них. Кстати, в MFC класс CListCtrl использует именно такую идеологию. Нужно всего лишь построить приложение на его основе, что я и делаю. Странно только, что никто другой этого еще не сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 12:02 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
EmeryЯ всего лишь предлагаю его конкретную реализацию, не более. «Тысячи существующих клиентов» завязаны на свои движки БД. Я предлагаю «развязать» хотя бы один из них. Зачем? Все базы данных на нижнем, "железном" уровне и так "развязаны" до конца. Всех этих столбцов, строк, представлений, индексов не существуют, существуют только плоское пространство байт. А уровнем ниже — "единицы" и "нули", определяемые намагниченными областями. Разработчики СУБД вложили много времени и усилий, чтобы работа с данными осуществлялась через абстракции. Лепить поверх этой абстракции свою самодельную "антиабстракцию" глупо. Если уж так хочется универсальности, разрабатывай свой бинарный формат данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 12:07 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
EmeryiscrafmВы путаете понятия. Общественное мнение здесь не причем. Самоубийц просто, обычно, пытаются отговорить не делать откровенную глупость. Если аргументов не хватает, прибегают к сильным словечкам. Зачем использовать запрещенные приемы? опять неправильно. Следует говорить "если аргументы закончились", это разные по сути фразы. Аргументы уже все приведены. EmeryEAV придумали до меня. Я всего лишь предлагаю его конкретную реализацию, не более. «Тысячи существующих клиентов» завязаны на свои движки БД. Я предлагаю «развязать» хотя бы один из них. Кстати, в MFC класс CListCtrl использует именно такую идеологию. Нужно всего лишь построить приложение на его основе, что я и делаю. Странно только, что никто другой этого еще не сделал. мда... Вам название класса понравилось в MFC? И что во там предлагаете "развязать"? Рановато. И какой хотя-бы один? p.s. что такое EAV вы узнали только в этом форуме, на первой странице. Страшно даже предположить, сколько еще неизвестных слов, кроме CListCtrl. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 12:08 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
БредятинаНо Вы, выходит, продолжаете не понимать, что к модели данных (РМД) индексы не имеют никакого отношения. Наверное поэтому Вы взяли из моего сообщения только нужную Вам фразу:) Хорошо, объясните своими словами, как можно работать с БД без индексов, с той же и большей производительностью. БредятинаА там же было и это "Что касается РСУБД, о которых Вы, видимо, рассказываете, то в них индексы хоть и скрыты, но они ведь, действительно не имеют отношения ни к РМД, ни к SQL. Это просто еще одна форма денормализации данных, не укладывающаяся в реляционную теорию (поэтому и скрыты:)), и приводящая, как обычно, к повышению производительности за счет избыточности данных." А в других сообщениях подробнее о доступе к индексу в терминах модели данных:) Сама по себе избыточность данных не дает прироста производительности, хотя и способствует ей. В моей терминологии это предварительная обработка данных. Сделав часть работы заранее, Вам не придется делать ее в критически важный (по затратам времени) момент. Но я откровенно говоря не понимаю Вашего игнорирования индексов, этого краеугольного камня БД. Какой механизм Вы предлагаете взамен? Так чтобы это можно было понять и прочувствовать. Насчет Ваших рассуждений об «еще одной форме денормализации данных, не укладывающихся в реляционную теорию» я вообще ничего не могу сказать, так как совершенно не понимаю смысла этой фразы. Можете объяснить «на пальцах»? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 12:17 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
БредятинаО "расширяемых средствах разработки", похоже, замяли:) Что и следовало ожидать:) Я процитировал только Ваши слова, обсуждение этого вопроса я не начинал, потому и развивать его не собираюсь, так как это уведет нас далеко в сторону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 12:20 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Alibek B.Предлагаю пойти дальше. Первая таблица — метаинформация о полях (названия, ключи, типы данных и длина). Вторая таблица — содержимое, но сами значения в ней не храняться. Третья таблица состоит из трех полей, ключа на вторую таблицу, порядкового номера и однобайтового поля. Для получения значения поля нужно извлечь все подчиненные записи из третьей таблицы и объединить их. Т.е. можно забыть о нерациональном использовании пространства, все данные будут занимать именно столько байт, сколько они занимают. Как идея? Если бы еще понять, что Вы имеет в виду :) ? Нарисуйте примеры этих таблиц, может тогда будет яснее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 12:33 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Emery «Справочник» - синоним первичной таблицы данных, а «условно-постоянная информация» означает редко изменяемую историю модификации полей этой таблицы. Можно обойтись без синонимов, только речь тогда будет перегружена одинаковыми терминами. Речь тогда будет простой и абсолютно понятной, что очень важно, особенно при обсуждении технических вопросов. А вот Вы к двум бесполезным терминам добавили еще один "первичная таблица данных":) А все из-за того, что мы до сих пор не знаем о какой модели данных в слое, который Вы, от безысходности, надстраиваете над реляционной моделью данных (так как РМД не позволяет решать Ваши задачи), идет речь:) Emery В документ могут и не записываться, чтобы не перегружать его ненужной информацией, но фиксация данных подразумевается. Например, я дал вам бутылку свежего пива по Вашей просьбе, а Вы мне возвращаете его несвежим, мотивируя, что за это время оно испортилось. Характеристика то его изменилась со временем. Это так, но операция перемещения бутылки пива от меня к Вам зафиксировала его свежим, вот и Вы должны вернуть его свежим, даже если за это время оно могло испортиться. Надеюсь, аналогия понятна? Аналогия совершенно не уместна:) Вы вынуждены были изменить свое решение, и не записывать в документ, а подразумевать, видимо, в своем сознании:) Теперь, что касается операции возврата отгруженной продукции. Вы отгрузили пиво 25.12.2010. Характеристики пива в "документ" не записали, но "подразумеваете":). То есть, если их посмотреть, так сказать, из этого документа, то мы должны увидеть характеристики на 25.12.2010. Возврат осуществлен 30.12.2010. К этому времени некоторые характеристики пива в БД изменились. Вы говорите, что при просмотре характеристик из "документа на возврат" мы должны видеть характеристики на дату отгрузки, а не на дату возврата. Это же не имеет никакого отношения к процедуре "прописывания характеристик в документ". Вы же уже согласились, что это не нужно делать? И какая же здесь "аналогия"?:) Emery «Назови, хоть горшком, только в печь не клади» :) . Даже если Вы используете сверхскоростной SQL сервер в любом клиенте, Вам не обойтись без закрытия периодов, например в учете начисленной и выплаченной зарплаты. А закрытие периодов это одна из форм проведения документов. Ну и что из того, что Вы начислили и выплатили Иванову в прошлом году большую, чем нужно зарплату? А он к тому же еще и уволился. Вы не можете просто так «откатиться» назад и переначислить ему зарплату «правильно». Избыток выплаченных ему денег можно либо списать, либо востребовать через суд. Но в любом случае корректировки прошлых периодов будут осуществляться в настоящем или будущих периодах. Но иногда проведение, другими словами фиксация документов и всех его свойств на время проведения, может быть ошибочной. Скажем, тупо ошиблись при вводе данных из бумажных документов. Тогда Вы можете отменить проведение (фиксацию) документов, изменить их и снова провести. Т.е. от идеологии проведения практически невозможно отказаться в современном бухгалтерском учете. Так что 1С тут ни причем. Очень даже при чем. Ведь можно просто откорректировать операцию (одну из десяти в документе, предположим), и получить точно такой же результат:). Точно так же можно сделать и в закрытом периоде. Просто в этом случае корректировка возникнет в текущем открытом периоде. Термин "проведение" возник от термина "проводка бухгалтерская". Но бухгалтерские проводки ведь автоматически делаются, о них вообще можно не беспокоиться:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 12:38 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
БредятинаEmery Без УК очень тяжело полноценно реализовать предлагаемую модель хранения данных. Поэтому приходится говорить и об универсальном клиенте. Что-то Вы запутываете простой вопрос:) Реализуйте для начала предлагаемую модель хранения данных, абсолютно полноценно, на СПЕЦИАЛИЗИРОВАННОМ клиенте. Модель хранения будет реализована абсолютно полноценно:) Что здесь очень тяжелого? Если бы существовал клиент, для которого можно реализовать данную схему, хоть специализированный, хоть универсальный, то данной проблемы не существовало бы. В любом случае, нужно либо писать собственно клиента (реально он будет далек от идеального универсального клиента), либо использовать любой существующий, но хакерскими методами делать в нем перехват сообщений виртуального режима, если он там поддерживается. Можно еще взять исходники проекта «2С», написанного на MFC, и поработать с ними. В любом случае, каждый вариант трудоемкий. Я пока остановился на собственном клиенте. Но дело движется медленно. Текущее состояние проекта можно посмотреть на моем сайте . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 12:46 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Emery Я писал уже, что несколько. Сначала попробую ту, что описал в начале темы (некую конкретизацию EAV). Если она не подойдет, то использую усовершенствованную модель данных, которую я применяю в своих конфигурация, ну и затем, для сравнения, некий вариант клиент-серверную модели. В любом случае УК должен быть одним и тем же. То, что Вы описали используется на стороне РСУБД. Это уже очевидно. Я спрашиваю о модели, которая будет описывать предметную область для пользователя, и, соответсвенно, использоваться в "универсальном клиенте" Emery По принципу, мухи отдельно, котлеты отдельно :) . Мне достаточно будет, если я смогу перехватывать сообщения виртуального режима. Теоретически это возможно даже для 1С77, только для этого ее надо декомпилировать, чего мне делать не хочется. Я не про реализацию же спрашиваю:) Еще раз: Какой "элемент" в Вашей архитектуре обеспечивает независимость от модели данных сервера БД? Как будет работать в случае IMS, например. Emery «Делать», в смысле «программировать», «разве это не очевидно» :) ? Еще как очевидно:) Из этого следует, что программист будет программировать запросы. Я и говорю: надеюсь, что это опечатка:) Очевидно же, что программист не должен программировать никакие запросы, они ведь будут появляться произвольным образом в процессе эксплуатации приложения. Или Вы что-то другое имели в виду? Например, процесс "настройки" на новый "сервер БД"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 12:49 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Alibek B.Зачем? Все базы данных на нижнем, "железном" уровне и так "развязаны" до конца. Всех этих столбцов, строк, представлений, индексов не существуют, существуют только плоское пространство байт. А уровнем ниже — "единицы" и "нули", определяемые намагниченными областями. Разработчики СУБД вложили много времени и усилий, чтобы работа с данными осуществлялась через абстракции. Лепить поверх этой абстракции свою самодельную "антиабстракцию" глупо. Если уж так хочется универсальности, разрабатывай свой бинарный формат данных. Я подозреваю разработчиков современных СУБД в недобросовестности, в избыточной коммерционализации своих БД, в наведении «тень на плетень». А вместо «своего бинарного формата данных» я лучше сделаю своего клиента на базе SysListView32 :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 12:55 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Emery Хорошо, объясните своими словами, как можно работать с БД без индексов, с той же и большей производительностью. Так Вы согласны, что в РМД нет никаких индексов?:) Я Вам об этом говорю, а не о том может ли РСУБД работать без индексов. Кроме того, я Вам уже объяснил, что может. Дейт считает, что TR (в которой, по сути, нет индексов) - это и есть схема хранения для "настоящей РСУБД". Вы хотите это оспорить?:) Emery Сама по себе избыточность данных не дает прироста производительности, хотя и способствует ей. В моей терминологии это предварительная обработка данных. Сделав часть работы заранее, Вам не придется делать ее в критически важный (по затратам времени) момент. Но я откровенно говоря не понимаю Вашего игнорирования индексов, этого краеугольного камня БД. Какой механизм Вы предлагаете взамен? Так чтобы это можно было понять и прочувствовать. Насчет Ваших рассуждений об «еще одной форме денормализации данных, не укладывающихся в реляционную теорию» я вообще ничего не могу сказать, так как совершенно не понимаю смысла этой фразы. Можете объяснить «на пальцах»? Конечно. См выше. И где Вы увидели индексы в РМД. Там есть "отношения", "ограничения целостности (ключи", "операции манипулирования отношениями". Где там "индексы" Вы увидели:)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 13:00 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Emery Я процитировал только Ваши слова, обсуждение этого вопроса я не начинал, потому и развивать его не собираюсь, так как это уведет нас далеко в сторону. Нет, не уведет. Вы, я уверен, НЕ УМЫШЛЕННО, а по невнимательности (которая, впрочем, не допустима при обсуждении формальных технических вопросов), приписали ВАШИ СЛОВА мне! Вы берете назад слова о "расширяемых средствах разработки", как не имеющие отношения к теме?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 13:04 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Emery Если бы существовал клиент, для которого можно реализовать данную схему, хоть специализированный, хоть универсальный, то данной проблемы не существовало бы. В любом случае, нужно либо писать собственно клиента (реально он будет далек от идеального универсального клиента), либо использовать любой существующий, но хакерскими методами делать в нем перехват сообщений виртуального режима, если он там поддерживается. Можно еще взять исходники проекта «2С», написанного на MFC, и поработать с ними. В любом случае, каждый вариант трудоемкий. Я пока остановился на собственном клиенте. Но дело движется медленно. Текущее состояние проекта можно посмотреть на моем сайте . Итак, Вы согласно, что "полноценная модель хранения" не имеет отношения к "степени универсальности клиента". Это хорошо:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 13:07 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
iscrafmАргументы уже все приведены. Но почему-то неубедительные :) . iscrafmмда... Вам название класса понравилось в MFC? И что во там предлагаете "развязать"? Рановато. И какой хотя-бы один? Не «название класса», а сам контрол. Вот, допустим, Вы хотите запустить в своем приложении собственный экземпляр comctl32.dll (где «живет» SysListView32). Вы можете даже явно вызвать свою версию этой библиотеки, отличную от системной, использовав LoadLibrary / GetProcAddress. Но все равно будет использоваться библиотека, прописанная в реестре и загруженная системой. Для того, чтобы заставить работать именно Вашу длл-ку, Вам нужно в шестнадцатиричном редакторе поменять имена типа SysListView32 / SysHeader32 и связанные с ними на свои имена. Так SysListView32 у меня стал SysListCtrl32 и т.д. Жаль только, что comctl32.dll из Win7 не работает под XP или Win2003. Разве только перекомпилировать эту длл :) ? Для мегабайтой comctl32.dll версии 6.0 у меня это получилось, и даже некоторые функции удалось выполнить, но за устойчивую работу всей библиотеки не уверен. iscrafmp.s. что такое EAV вы узнали только в этом форуме, на первой странице. Страшно даже предположить, сколько еще неизвестных слов, кроме CListCtrl. Узнать, то я узнал, только что узнал я нового? Только то, что подобная технология кем-то из буржуев изобретена до меня. Но я и так не претендовал на авторство, ибо идея эта «витает в воздухе». И что толку от бесполезных «умных» словечек, кроме как оказать впечатление на непосвященного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 13:18 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
я разрабатывал несколько учетных систем, первая была как раз на EAV в принципе, этот тип имеет право на жизнь, если мы работаем с небольшими объемами данных и нам не нужны некоторые возможности. кроме уже обозначенных проблем с уникальными индексами и ссылочной целостностью возникает ещё вопросы с производительностью: в случае "обычных" таблиц большинство современных субд позволяют разбить по разным дискам, применить партиционирование и др. EAV может быть полезной штукой для хранения изменений во времени, некоторых OLAP, но не для OLTP операций Представьте себе что нужно будет изменить все данные в одном мега-справочнике, в случае "обычных" таблиц мы накладываем блокировку на таблицу, изменяем всё что нужно не затратив на блокирование особых ресурсов. В случае одной универсальной таблицы, нам нужно блокировать по строкам (хранить в памяти все идентификаторы заблокированных строк) либо блокировать всю таблицу (а следовательно и всю систему) целиком. Для хранения исторических сведений существуют разные варианты реализации можно погуглить или вот например ( http://habrahabr.ru/blogs/sql/101544/) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 13:38 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
БредятинаРечь тогда будет простой и абсолютно понятной, что очень важно, особенно при обсуждении технических вопросов. А вот Вы к двум бесполезным терминам добавили еще один "первичная таблица данных":) А все из-за того, что мы до сих пор не знаем о какой модели данных в слое, который Вы, от безысходности, надстраиваете над реляционной моделью данных (так как РМД не позволяет решать Ваши задачи), идет речь:) Какой Вы, однако, категоричный! Не нравится Вам предлагаемая терминология, ну и не используйте ее. Мне она удобна и полезна. Я пока еще ничего не «надстраиваю», а просто решаю проблему с программированием своего клиента. Будет ли он работать по предлагаемой модели хранения данных или по другой, не суть важно. Достаточно будет если я перенесу свои работающие конфигурации из 1С77 на своего клиента, естественно с усовершенствованиями. А нравится Вам эта идея или нет, понятна или нет, это уже другой вопрос. Про свои конфигурации я много писал здесь на форуме. Народ в основном воспринимает в штыки, что меня очень удивляет. Вам то какая разница? Конфигурации работают, все проблемы решают – почему это Вас раздражает? Вот решил подумать об их усовершенствованиях и опять критика. Давно думаю, что надо молча работать :) . Тогда ненужных проблем будет меньше :) . Я ведь ничего не спрашиваю, просто делюсь информацией. Полезных идей все равно почти не слышно. БредятинаАналогия совершенно не уместна:) Вы вынуждены были изменить свое решение, и не записывать в документ, а подразумевать, видимо, в своем сознании:) Теперь, что касается операции возврата отгруженной продукции. Вы отгрузили пиво 25.12.2010. Характеристики пива в "документ" не записали, но "подразумеваете":). То есть, если их посмотреть, так сказать, из этого документа, то мы должны увидеть характеристики на 25.12.2010. Возврат осуществлен 30.12.2010. К этому времени некоторые характеристики пива в БД изменились. Вы говорите, что при просмотре характеристик из "документа на возврат" мы должны видеть характеристики на дату отгрузки, а не на дату возврата. Это же не имеет никакого отношения к процедуре "прописывания характеристик в документ". Вы же уже согласились, что это не нужно делать? И какая же здесь "аналогия"?:) Пять дней для консервированного пива погоды не делают. Но попробуйте вернуть то же самое пиво после его срока хранения. Торговля не имеет права продавать простроченные продукты. Хотя кто нынче блюдет законодательство? В общем, свою мысль я высказал, но ничего доказывать не собираюсь. Вы можете вести учет по своей учетной политике, а я по своей и никаких проблем. БредятинаEmeryТак что 1С тут ни причем. Очень даже при чем. Ведь можно просто откорректировать операцию (одну из десяти в документе, предположим), и получить точно такой же результат:). Точно так же можно сделать и в закрытом периоде. Просто в этом случае корректировка возникнет в текущем открытом периоде. Термин "проведение" возник от термина "проводка бухгалтерская". Но бухгалтерские проводки ведь автоматически делаются, о них вообще можно не беспокоиться:) Понятно, что Вы исходите из своего опыта работы, который отличается от моего. Отсюда и недоразумения. Для меня «проведение» означает «фиксацию данных», с одной стороны и дублирование данных, упорядоченных по другим индексам и / или в других таблицах (с целью ускорения доступа к данным) с другой. Понятно, что под это определение подпадают бухгалтерские проводки. Но для меня они отнюдь не первичны. Для меня первичны натуральные операция, а бухгалтерские операции вторичны. Поэтому и бухгалтерские проводки я программирую сам, а не использую стандартную «Бухгалтерию для Украины», скажем. Также и учет ресурсов и начислений (з/п, в основном) я тоже делаю по своей модели учета, отличной от прикладной модели учета братьев Нуралиевых. Можете сколько угодно доказывать, что я не прав, но моя модель работает и полностью меня удовлетворяет, если не считать ограничений самого ядра 1С77. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 23:54 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
БредятинаТо, что Вы описали используется на стороне РСУБД. Это уже очевидно. Я спрашиваю о модели, которая будет описывать предметную область для пользователя, и, соответсвенно, использоваться в "универсальном клиенте" Если хотите, модель отображения данных в клиенте будет похожа на работу моих конфигураций (которые 1С-несовместимы) в «семерке». Моя модель мне очень нравится, если не считать ограничений ядра 1С77. Основная суть ее – это первичность натурального учета и вторичность бухгалтерского учета (который правильней назвать «бухгалтерским контролем» :) ) . Детали, я когда-нибудь опубликую полностью. Новых локальных идей там реализовано много. А как данные будут храниться в БД, это уже другой вопрос. Буду пробовать разные варианты, не считая уже реализованного. БредятинаЯ не про реализацию же спрашиваю:) Еще раз: Какой "элемент" в Вашей архитектуре обеспечивает независимость от модели данных сервера БД? Как будет работать в случае IMS, например. Я же Вам говорил, все, что мне нужно, это возможность самому обрабатывать уведомления виртуального режима списка SysListView32 (CListCtrl в MFC). Никакого другого «элемента» мне не нужно. Это все будет реализовано в той программе, что я пишу сейчас. Emery «Делать», в смысле «программировать», «разве это не очевидно» :) ? Еще как очевидно:) Из этого следует, что программист будет программировать запросы. Я и говорю: надеюсь, что это опечатка:) Очевидно же, что программист не должен программировать никакие запросы, они ведь будут появляться произвольным образом в процессе эксплуатации приложения. Или Вы что-то другое имели в виду? Например, процесс "настройки" на новый "сервер БД"?[/quot] Да нет, пожалуй, то, что Вам не очень нравиться :) . В ссылке выше я привел пример работы с данными, по интересуемой меня методологии. Там продемонстрирован доступ в виртуальном режиме из списков к трем dbf-файлам, с которыми я работаю непосредственно. Пример пока простой, но с перспективой на многомегабайтные базы. Более того, я сейчас собираюсь реализовать собственный вариант создания и поддержки компаундных индексных cdx-файлов. Кое-что по этому поводу есть на моем, процитированном выше, сайте. Только можете не тратить свое время на критику этой идеи. Я уже много ее услышал и вряд ли Вы добавите что-то принципиально новое. Вот ALX (Алексей Долгачев) занимался подобными разработками, но я собираюсь идти дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2011, 00:19 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
БредятинаEmery Хорошо, объясните своими словами, как можно работать с БД без индексов, с той же и большей производительностью. Так Вы согласны, что в РМД нет никаких индексов?:) Я Вам об этом говорю, а не о том может ли РСУБД работать без индексов. Кроме того, я Вам уже объяснил, что может. Дейт считает, что TR (в которой, по сути, нет индексов) - это и есть схема хранения для "настоящей РСУБД". Вы хотите это оспорить?:) Говорить, то Вы говорили, но объяснить своими словами, как можно работать без индексов не хотите. Допустим Ваш Дейт прав, но почему бы Вам не объяснить в двух словах суть его идеи, за счет собственно чего достигается эффективность доступа к данным в БД, организованной по его методалогии? БредятинаКонечно. См выше. И где Вы увидели индексы в РМД. Там есть "отношения", "ограничения целостности (ключи", "операции манипулирования отношениями". Где там "индексы" Вы увидели:)? Но за счет чего достигается скорость доступа к данным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2011, 00:36 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
pil0tя разрабатывал несколько учетных систем, первая была как раз на EAV в принципе, этот тип имеет право на жизнь, если мы работаем с небольшими объемами данных и нам не нужны некоторые возможности. кроме уже обозначенных проблем с уникальными индексами и ссылочной целостностью возникает ещё вопросы с производительностью: в случае "обычных" таблиц большинство современных субд позволяют разбить по разным дискам, применить партиционирование и др. Если Вы сами контролируете создание таблиц, то можете хранить их на разных дисках тоже. Пока у меня нет нужды работать с промышленными данными. А для предприятия среднего уровня продуманная структура данных, в принципе решает все перечисленные Вами проблемы. pil0tEAV может быть полезной штукой для хранения изменений во времени, некоторых OLAP, но не для OLTP операций Представьте себе что нужно будет изменить все данные в одном мега-справочнике, в случае "обычных" таблиц мы накладываем блокировку на таблицу, изменяем всё что нужно не затратив на блокирование особых ресурсов. В случае одной универсальной таблицы, нам нужно блокировать по строкам (хранить в памяти все идентификаторы заблокированных строк) либо блокировать всю таблицу (а следовательно и всю систему) целиком. Я не веду речь про «одну универсальную таблицу». Таблиц столько же сколько и было раньше, даже в два раз больше, так как нужно еще описывать их метаданные. Только вот структура у всех них будет единообразной, за счет собственно чего и будет сделана попытка усовершенствования доступа к данным. pil0tДля хранения исторических сведений существуют разные варианты реализации можно погуглить или вот например ( http://habrahabr.ru/blogs/sql/101544/) Спасибо за информацию! Посмотрю уже после Нового Года! Всех с Новым Годом! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2011, 00:49 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Emery Какой Вы, однако, категоричный! Не нравится Вам предлагаемая терминология, ну и не используйте ее. Мне она удобна и полезна. То есть, Вы категоричный:) Так что такое "первичная таблица данных"? Emery Я пока еще ничего не «надстраиваю», а просто решаю проблему с программированием своего клиента. Будет ли он работать по предлагаемой модели хранения данных или по другой, не суть важно. Постепенно становится очевидным, что Вы сами не знаете какая связь между клиентом и "предлагаемой моделью хранения данных" (или другой):) Emery Достаточно будет если я перенесу свои работающие конфигурации из 1С77 на своего клиента, естественно с усовершенствованиями. А нравится Вам эта идея или нет, понятна или нет, это уже другой вопрос. Она не понятна Вам, а не мне. Поэтому Вы и не можете объяснить какую модель данных Вы используете. Создается впечатление, что никакую. То есть, предполагается перманентное программирование:) Emery Про свои конфигурации я много писал здесь на форуме. Народ в основном воспринимает в штыки, что меня очень удивляет. Я ничего в штыки не воспринимаю. Никогда. Только объективный анализ... Вот и еще один удобный для Вас термин. Что за "кофигурации"? Универсального клиента?:) Emery Вам то какая разница? Конфигурации работают, все проблемы решают – почему это Вас раздражает? Вот решил подумать об их усовершенствованиях и опять критика. Давно думаю, что надо молча работать :) Это Вас раздражает то, что Вы не понимаете над чем работаете:) Критиковать, пока, нечего. Вон сколько Вы пишите не по существу, вместо того, чтобы с моей помощью объяснить себе чем Вы занимаетесь. Emery Тогда ненужных проблем будет меньше :) . Я ведь ничего не спрашиваю, просто делюсь информацией. Полезных идей все равно почти не слышно:) Проблем будет меньше, если Вы объясните какая модель данных используется для описания предметной области. Emery Пять дней для консервированного пива погоды не делают. Но попробуйте вернуть то же самое пиво после его срока хранения. Торговля не имеет права продавать простроченные продукты. Хотя кто нынче блюдет законодательство? В общем, свою мысль я высказал, но ничего доказывать не собираюсь. Вы можете вести учет по своей учетной политике, а я по своей и никаких проблем. Какое консервированное пиво? Это элемент Вашей модели данных? Вместо того, чтобы признать свою ошибку (сохранение характеристик материала в документе) Вы продолжаете добавлять все новые и новые термины, абсолютно бесполезные для понимания модели хранения и "универсального клиента". Теперь вот "консервированное пиво", "просроченные продукты" и, наконец, "своя учетная политика":) Emery Понятно, что Вы исходите из своего опыта работы, который отличается от моего. Отсюда и недоразумения. Для меня «проведение» означает «фиксацию данных», с одной стороны и дублирование данных, упорядоченных по другим индексам и / или в других таблицах (с целью ускорения доступа к данным) с другой. Понятно, что под это определение подпадают бухгалтерские проводки. Но для меня они отнюдь не первичны. Для меня первичны натуральные операция, а бухгалтерские операции вторичны. Поэтому и бухгалтерские проводки я программирую сам, а не использую стандартную «Бухгалтерию для Украины», скажем. Также и учет ресурсов и начислений (з/п, в основном) я тоже делаю по своей модели учета, отличной от прикладной модели учета братьев Нуралиевых. Можете сколько угодно доказывать, что я не прав, но моя модель работает и полностью меня удовлетворяет, если не считать ограничений самого ядра 1С77. Опять многословно уводите от существа вопроса. Откорректировать одну операцию в документе проще и быстрее, чем "перепроводить документ". При чем здесь чей-то опыт??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2011, 01:46 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Emery Если хотите, модель отображения данных в клиенте будет похожа на работу моих конфигураций (которые 1С-несовместимы) в «семерке». Моя модель мне очень нравится, если не считать ограничений ядра 1С77. Основная суть ее – это первичность натурального учета и вторичность бухгалтерского учета (который правильней назвать «бухгалтерским контролем» :) ) . Детали, я когда-нибудь опубликую полностью. Новых локальных идей там реализовано много. А как данные будут храниться в БД, это уже другой вопрос. Буду пробовать разные варианты, не считая уже реализованного. Какая еще модель отображения? Еще один новый термин:) Ну Вы же сами опубликовали тему в разделе ПРОЕКТИРОВАНИЕ БАЗ ДАННЫХ! Как Вы проектируете базу данных? Объясните от начала и до конца. Например, выяснилось, что в предметной области есть люди, которые работают в организациях. И нет больше ничего. Только Люди и Организации, в которых Люди работают:) Emery Я же Вам говорил, все, что мне нужно, это возможность самому обрабатывать уведомления виртуального режима списка SysListView32 (CListCtrl в MFC). Никакого другого «элемента» мне не нужно. Это все будет реализовано в той программе, что я пишу сейчас. То есть, Вы не знаете какова архитектура Вашего решения, и как будете работать с IMS. Ну так бы сразу и сказали:) Emery Да нет, пожалуй, то, что Вам не очень нравиться :). В ссылке выше я привел пример работы с данными, по интересуемой меня методологии. Там продемонстрирован доступ в виртуальном режиме из списков к трем dbf-файлам, с которыми я работаю непосредственно. Пример пока простой, но с перспективой на многомегабайтные базы. Более того, я сейчас собираюсь реализовать собственный вариант создания и поддержки компаундных индексных cdx-файлов. Кое-что по этому поводу есть на моем, процитированном выше, сайте. Только можете не тратить свое время на критику этой идеи. Я уже много ее услышал и вряд ли Вы добавите что-то принципиально новое. Вот ALX (Алексей Долгачев) занимался подобными разработками, но я собираюсь идти дальше. Вы о чем? Вы будете программировать каждый новый запрос? Эту идею просто невозможно критиковать. Это просто смешно:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2011, 02:01 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Emery Говорить, то Вы говорили, но объяснить своими словами, как можно работать без индексов не хотите. Допустим Ваш Дейт прав, но почему бы Вам не объяснить в двух словах суть его идеи, за счет собственно чего достигается эффективность доступа к данным в БД, организованной по его методалогии? Вы меня с кем-то путаете. Я ни про какие идеи Дейта в этой теме не говорил:) Emery Но за счет чего достигается скорость доступа к данным? Вы про TR? Прочитайте Приложение A в 8-м издании "Введение в системы баз данных" Дейта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2011, 02:06 |
|
||
|
Универсальное представление данных
|
|||
|---|---|---|---|
|
#18+
Emerypil0tДля хранения исторических сведений существуют разные варианты реализации можно погуглить или вот например ( http://habrahabr.ru/blogs/sql/101544/ ) Спасибо за информацию! Посмотрю уже после Нового Года! Интересные рассуждения, но не более. Для меня ничего полезного. Хранение истории модификации я продемонстрировал на примере второй таблицы в начале этого топика. Там есть поля: год модификации (достаточно одного символа от "0" до "9" или от "A" до "Z", что даст диапазон дат: 2000 – 2036 года, вполне достаточно для наших целей); месяц модификации (от "0" до "9" или от "A" до "C" – эквивалентные 1 – 12 месяцу) и день модификации (от "0" до "9" или от "A" до "V" – эквивалентные 1 – 31 дню). Изменения поля начинают действовать с даты модификации, до тех пор, пока не наступит следующая модификация, что зафиксируется определенной записью. Отсутствие даты модификации означает, что значение действует с «нулевого» времени, фактически с начала учетной даты в данной системе. Если диапазона в 36 лет будет недостаточно, то можно выбрать год двухбайтным (в 36-тиричной системе отчета, что даст диапазон дат в 1296 лет, точку отсчета можно выбрать произвольной, например 1500 год и т.д.). Данной информации вполне достаточно для хранения истории модификации данных первичных таблиц, т.е. таблиц определений (некоторых объектов, представимых своими записями в «плоской» таблице базы данных). Во вторичных таблицах или таблицах отношений (между объектами, определенных в первичных таблицах) модификаций полей данных быть не должно, поскольку они фиксируют операции, на определенную дату / время. Само же логгирование (журналирование) любых изменений в БД можно вести в специальном журнале. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2011, 15:47 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37043947&tid=1542374]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 357ms |

| 0 / 0 |
