Антишаблон AntFarm — стратегии избежать, противоядия, чтобы помочь зажить от

Файловая система NTFS (и ext3-4) использует журнал транзакций для управления изменениями. Каждое изменение сохраняется в журнале, а затем сам журнал используется для эффективного изменения. За исключением катастрофических сбоев диска, файловая система спроектирована так, чтобы она соответствовала своим собственным структурам данных, а не вашей: в случае сбоя процедура восстановления решит, что откатиться, чтобы сохранить согласованность , В случае отката ваши «еще не записанные, но подлежащие записи» данные будут потеряны. Файловая система будет согласованной, а ваши данные - нет.

Кроме того, существует несколько других факторов: программные и аппаратные кэши вводят дополнительный уровень и, следовательно, точку отказа. Обычно операции выполняются в кеше, а затем сам кэш сбрасывается на диск. Драйвер файловой системы не будет видеть операции, выполненные «в» кэше, но мы увидим операции очистки. Это сделано из соображений производительности, поскольку жесткий диск является узким местом. Аппаратные контроллеры имеют батареи, которые гарантируют, что их собственный кэш может быть очищен даже в случае потери питания.

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

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

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

Чтобы быть ACID, вам нужно спроектировать свои структуры данных и / или то, как вы их используете, чтобы не полагаться на детали реализации. Например, Mercurial (инструмент управления версиями) всегда добавляет свои собственные данные в свой собственный журнал изменений. Существует множество возможных шаблонов, однако, чем больше гарантий вам нужно, тем больше технологий вы получите (и с какой привязкой).

5
задан alchemical 5 February 2009 в 00:38
поделиться

6 ответов

Я думаю, что Parnas в значительной степени закрепил его в На Критериях, которые будут использоваться в Разлагающихся Системах в Модули. Каждый модуль должен скрыть проектное решение, то, которое может измениться в будущем. В целом модуль ни с чем для сокрытия является обычно просто служебным. Он не говорил о классах точно, но я думаю, что обоснование все еще применяется.

8
ответ дан 18 December 2019 в 13:20
поделиться

Glomek спасибо, который статья для интересного пространства задач, идя в ядро того, что является OO, т.е. как разработать Ваши объекты... для успешности или неуспешности, спасибо за ссылку.

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

1
ответ дан 18 December 2019 в 13:20
поделиться

Если это действительно связано с чрезмерным дизайном (а это звучит так), то вот несколько синонимов для вас:

Gas Factory
Машина Руба Голдберга
Устройство Хита Робинсона

Но мое личное имя для этого «слишком стараюсь F # $% 3n трудно». Мои соболезнования.

Ура Адриан

3
ответ дан 18 December 2019 в 13:20
поделиться

Многие файлы, которые можно использовать. Противно. 500 объектов на 10 веб-страниц кажется сумасшедшим соотношением. Рассматривали ли вы возможность проведения анализа кода решения? Могу дать вам интересную статистику, с помощью которой можно дать отпор.

Также я бы назвал анти-антипаттерн KISS.

2
ответ дан 18 December 2019 в 13:20
поделиться

Проблема в том, что ваш шаблон проектирования сам по себе не является объектно-ориентированным. Начните с не-объектно-ориентированного шаблона, попробуйте реализовать его как «объекты», и вы получите беспорядок.

Тот факт, что система написана на OOPL, не делает систему объектно ориентированной.

0
ответ дан 18 December 2019 в 13:20
поделиться

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

Критика ООП, основанная на сложности "уместить все в голове", всегда игнорирует то, что (а) трудно уместить все в голове (независимо от того, ОО это или нет) и (б) что ООП активно снижает необходимость иметь все в голове в любом случае

.
0
ответ дан 18 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: