|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
andycppДа и вообще - 1С = statutory/tax accounting reporting tool и ничего более. Угумс. Особенно, если авторы термина ERP (Gartner Group) признали 1С:УПП ERP-системой. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2007, 16:28 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
> Вам известно, что многие КРУПНЕЙШИЕ ERP (типа Oracle EBS) не используют связки foreign > key\primary key? Их, наверное, идиоты писали из фирмы Oracle, большие любители dbf. Ага. Они просто эти вещи не выделяют отдельными триггерами (ведь, в конце-концов, foreign key\primary key - триггеры с поиском по индексам), а вставляют в комплексные триггеры объектов БД. Могут себе позволить, являясь одним из подразделений разработчика базовой СУБД. А я вот себе такие фокусы рад бы позволить, да не могу. В результате у меня на событие before update вызываются 2 триггера - сначала системный на foreign key, а потом мой - для бизнес-логики. И вот тут-то я не могу сделать такой фокус, как делают разработчики OEBS. Во-первых, не могу изменить этот порядок срабатывания, а во-вторых - не могу позволить себе переписать системный триггер на foreign key. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2007, 16:35 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
Сисой В случае 1С отказ от контроля ссылочной целостности по первичному ключу вызван повсеместным использованием ссылок по recid. Ключи используются только в необъктных таблицах (регистрах). Кроме того, используется ряд фокусов при организации распределенной БД. Например, при загрузке XML-файла с изменениями из одной БД в другую контроль целостности на уровне кода приложения ОТКЛЮЧАЕТСЯ (т.к. загружаемый объект может ссылаться на еще не загруженные в транзакции объекты). Это не есть гуд, но сделано именно так. Кроме того, ограничения, накладываемые кодом приложения 1С на объекты БД (например, документы), иногда довольно сложны, носят нереляционный характер и в терминах стандартного Т-SQL будут занимать не одну страницу кода триггера (в 1С используются встроенные методы объектов). А если учесть, что 1С уже поддерживает 4 СУБД (включая свою файл-серверную), то проблема генерации триггеров для объектно-ориентированных или объектно-подобных мультиплатформенных ИС вызывает священный ужас разработчика (особенно если учесть часто возникающую необходимость интеграции триггеров с подсистемами задач/сообщений). Плюс возможная несовместимость таких механизмов со следующими версиями СУБД. Вот получется за счет универсальности доступа к данным построена модель БД, приводящая к крайне низкой производительности, но позволяющая программисту абстрагироваться от физической модели данных. Это очень хорошо, но... подвела реализация?.. Ну пускай в универсальной 1cv7s.exe не хватило сил или времени хотя бы сравнять производительность dbf и sql движка, но зачем в 8.x опять плодить один большой универсальный сервер приложений, поддерживающий 4 СУБД, включая свою собственную? Ведь опять теже грабли с производительностью в 8.0 что и были в 7.7, мучительно преодолеваемые в 8.1. Не проще ли было написать несколько вариантов серверов приложений, оптимизированных под нужную СУБД? Ведь трехзвенка и затевалась ради независимости от конкретики СУБД на стороне клиента... Есть возможность "выполнить метод на стороне сервера приложений", почему нет способа "выполнить метод на стороне сервера БД"? Вечный выбор - либо универсальность, либо скорость... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2007, 17:24 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
Егоров АлександрЕсть возможность "выполнить метод на стороне сервера приложений", почему нет способа "выполнить метод на стороне сервера БД" ? Вечный выбор - либо универсальность, либо скорость... Э что то вас понесло .. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2007, 17:28 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
Я пока для себя нашел недавно только ОДНУ задачу, в которой бы мне пригодилось использовать foreign key constraint. Это замена дублей контрагентов. Для этого достаточно восстановить все связи таблицы контрагентов по метаданным и сделать update СправочникКонтрагенты set id = '%%%' where id = '%%%'. И тогда сервер баз данных мне действительно поможет. В самой базе данных разумеется отключена возможность "непосредственного удаления объектов". Никогда не возникало проблем из-за нарушения ссылочной целостности. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2007, 17:49 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
Ферзь Егоров АлександрЕсть возможность "выполнить метод на стороне сервера приложений", почему нет способа "выполнить метод на стороне сервера БД" ? Вечный выбор - либо универсальность, либо скорость... Э что то вас понесло .. это бывает. :) особенно когда требуется очередное многочасовое "восстановление последовательности" или "формирование внутренних продаж" и начинаешь откладывать ее до ночи или ближайших выходных... с ностальгией вспоминая самописку, в которой "последовательности" даже большего количества документов восстанавливались в течении нескольких минут. В том числе и благодаря возможности "выполнять методы на стороне сервера БД"... И не двух двухядерных ксеонах, а на обычном p-III... Я понимаю - идеал недостижим. Но к 1С острая нелюбовь как раз по причине "ну разве можно так издеваться над sql-сервером???" А ведь сам начинал когда-то подсаживать людей на 1С именно из-за наличия готовых решений учета. Теперь у тех людей вырос документооборот и... предложить нечего. Либо монстров типа Ax\Nav\Sap, либо "кластеры северов", либо самописки... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2007, 18:23 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
svcoderЯ пока для себя нашел недавно только ОДНУ задачу, в которой бы мне пригодилось использовать foreign key constraint. Это замена дублей контрагентов. Сразу хочется спросить, а разве нельзя заранее обеспечить уникальность справочника контрагенты? Если вы говорите, что логическая целостность базы - задача клиента, значит ваш клиент плохо написан, раз допускает дубляжи уникальных значений? Соответственно никакой гарантии логической целостности клиент не дает и даже помощи в этом не оказывает? в отличии от unique constraint по нескольким полям? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2007, 18:46 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
ну, про целостность все понятно: "есть люди, и есть аднайесниги, и вмести им не сойтис"... а вот кто мне раскажет, на буя блокировать версионник? Что, трудно исполняя всю логику клиентом обойтись без блокировок? Ведь даже с клиента можно сформировать скрипт а-ля: Код: plaintext 1. 2. 3. 4.
или лень верифицировать работу с субд-ками? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2007, 11:01 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
> буя блокировать версионник а как ты без блокировки будешь уверен в том что пока ты считал регистры, никто их поменять не успел? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2007, 11:17 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
ScareCrow > буя блокировать версионник а как ты без блокировки будешь уверен в том что пока ты считал регистры, никто их поменять не успел? Posted via ActualForum NNTP Server 1.4гм. как бы помягче выразиться. проблема регистров вообще решается триггерами. Знаете что это такое? - кто-то что-то поменял - поменялись и регистры. И нет никаких проблем. для реализации же такой же логики без триггеров (т.е. без учета типа СУБД) есть много иных способов, окромя блокировок. Например выставка флагов и реализация "поменять" только для неофлаженных (единообразная для всех таблиц бд). Правда там появляется проблема нежданно отвалившегося офлаговавшего клиента. ну так и она вполне решаема. вот только зачем копировать унивресальные серверные механизмы клиентом? он ведь и так уже неприлично тяжел. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2007, 11:47 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
я говорю про фантомы в таблицах. такое решается ТОЛЬКО блокировками Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2007, 12:10 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
ScareCrow я говорю про фантомы в таблицах. такое решается ТОЛЬКО блокировками гм. давайте вы все таки будете говорить за регистры 1С. что вам не нравится? распишите ситуацию. И мы ее порешаем без блокировок. и вообще, товарищи однойесниги, давайте не скакать мыслью, а да, насчот белгорода: там еще есть "крыгинское купалище" (расказывали, что в конце прошлого века еще было) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2007, 12:20 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
поскольку ответа видимо не будет, продолжим знакомиться с работой постгреса: ScareCrow > буя блокировать версионник а как ты без блокировки будешь уверен в том что пока ты считал регистры, никто их поменять не успел? моделируем регистр: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
моделируем работу транзакций апдейта с клиента (открываем 2 окна в пгадмине и пишем в каждом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
запускаем во втором - "сюрпрайс-сюрпрайс" - окно подвисает (дожидается коммита первой транзакции), т.ч. "изменить строку регистра", пока первый что-то считал в этой записи регистра - нам не удастся. Завершаем в первом COMMIT; - второе отрабатывает, и выдает нам нашу честную 3-ку. что я делал не так? (по поводу апдейта строки не регистра, а исходного документа в момент выполнения транзакции по пересчету регистра - это тот же вопрос - в 1-й транзакции надо 1-м делом захватить строку документа апдейтом статуса "проведен" (а апдейтящий строку документа запрос с клиента должен содержать строку WHERE "проведен"=FALSE - нормальный запрет апдейта проведенного документа (без отмены проведения)) - тогда в момент отработки 1-й транзакции после захвата и до коммита второй клиент уже не сможет отапдейтить строку документа (она апдейтится) - повиснет в ожидании коммита, а после коммита не сможет - поскольку прочтет скомиченную запись "проведен"=TRUE, в случае же, если вторая транзакция изменит sum в документе до захвата строки документа первой - 1-я не сумеет ее захватить на смену статуса "проведен" до закоммичевания второй, и не будет пересчитывать и sum регистра вплоть до закомичевания второй). ЗЫ. то же в случае, если транзакции только инсертят в регистр ("режим распараллеливания"), а асинхронно (не в транзакции проведения) группирует записи (т.е. апдейтит одну ,грохая дубли,) либо один (единственный на кластер) процесс в третьем слое, либо job на сервере. Просто тут этот "централизованный" процесс - выступает в роли второй транзакции - то что он захватил уже не апдейтится, а разве что по завершению... еще раз: что именно вас пугает в такой работе с регистрами? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 12:17 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
> окно подвисает (дожидается коммита первой транзакции это и есть блокировка. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:03 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
во вторых у тебя версионник. и это значит что у тебя пишушие блокируют пишущих. а читающих нет. и что будет если ты делаешь апдейт, а в это время вторая транзакция ЧИТАЕТ твой регистр? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:06 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
ScareCrow > окно подвисает (дожидается коммита первой транзакции это и есть блокировка. Posted via ActualForum NNTP Server 1.4это отнюдь не блокировка _таблицы_. и не надо тут .... (другую записьпись вы в этом случайе нормально отапдейтите. А вот 1с в норме ("автоматицки") блокирует _таблицы_ постгреса (RTихFM!!!). Это как называеццо? Убивать гадов!) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:09 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
ScareCrow во вторых у тебя версионник. и это значит что у тебя пишушие блокируют пишущих. а читающих нет. и что будет если ты делаешь апдейт, а в это время вторая транзакция ЧИТАЕТ твой регистр? Posted via ActualForum NNTP Server 1.4а какие у вас проблемы с тем, что кто-то прочитал срез БД на начало читающей транзакции? уроды ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:10 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
>что кто-то прочитал срез БД на начало читающей транзакции ты сам про уровни изолированности прочитаешь ? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:17 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
ScareCrow >что кто-то прочитал срез БД на начало читающей транзакции ты сам про уровни изолированности прочитаешь ? Posted via ActualForum NNTP Server 1.4я бы попросил не хамить. мне неприятно, когда люди сомнительных какчеств пытаюццо мне хамски тыкать. для не самых понятливых рекомендую сходить по ссылке. для более понятливых - если транзакция 1. чисто читающая (ничего апдейтится не будет, выводится отчет и т.п.) - проблем нет - вы видите срез данных на момент времени. никто и не обещал, что срез данных в бд вечен. 2. читает, чтобы писать (куда-то еще) - нужно, как сразу говорилось ( 4913392 ), учитывать тип сервера. - например обеспечить нормальный флажковый механизм (см отступление в #4938264 о записи в документ одной из транз). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:29 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
>это отнюдь не блокировка _таблицы_ >Это как называеццо? это косяк 1С за который их пинают нещадно. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:41 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
>никто и не обещал, что срез данных в бд вечен. одна транзакция расчитала регистр и делает по нему движения. вторая соответственно прочитала СТАРЫЕ данные. и сделала движения. в результате могут быть минуса там где нельзя. без блокировок тут никак. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:41 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
ScareCrow >это отнюдь не блокировка _таблицы_ >Это как называеццо? это косяк 1С за который их пинают нещадно. так почему вы мне отказываете в этом удовольствии? кажется вопрос мой касался именно этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:44 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
ScareCrow >никто и не обещал, что срез данных в бд вечен. одна транзакция расчитала регистр и делает по нему движения. вторая соответственно прочитала СТАРЫЕ данные. и сделала движения. в результате могут быть минуса там где нельзя. без блокировок тут никак. Posted via ActualForum NNTP Server 1.4не говорите глупостей, и я не буду говорить, что я о них думаю. без блокировок (таблиц) тут именно как. движение меняет регистр или нет? где _именно_ у вас появился минус? Еще раз просмотрите 2 транзакции, меняющие запись регистра. Очевидно, что блокировка _одной_ (и той же) изменяемой записи блокировочником производится самим,ля без ансам,ля в виде требований блокировок на _всю_таблицу_, накладываемыми одноесиной. таких ансам,лей нам не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:50 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
надоел Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 13:56 |
|
есть ли "структура БД" у 1С?
|
|||
---|---|---|---|
#18+
ScareCrow надоел 2ScareCrow слиф зощитан. впредь дурь-то придерживайте при себе - за антиллехента сойдете. Итак. возвращаемся к утверждению: чтобы прога работала нормально с разными хранилищами - ее работа с хранилищами должна быть версифицирована - с тем чтобы не накладывать лишних ограничений там, где для данного типа хранилищ такая-то проблема решается иначе. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2007, 14:07 |
|
|
start [/forum/topic.php?fid=28&msg=34951823&tid=1525183]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
139ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 241ms |
0 / 0 |