В данной статье приведены общие сведения об организации работы системы 1С:Предприятие с распределенной информационной базой (ИБ). Также описаны внутренние особенности организации механизма работы с распределенными данными для того, чтобы специалисты, осуществляющие конфигурирование и администрирование распределенных систем могли лучшее понимать выполняемые системой действия. Данная информация может также быть использована для оценки дополнительных затрат ресурсов системы, расходуемых на поддержание распределенной информационной базы.
Так как средства системы 1С:Предприятие для работы с распределенными информационными базами поставляются отдельно, сначала кратко остановимся на назначении и основных принципах организации работы системы 1С:Предприятие с территориально удаленными подразделениями.
Назначение и основные принципы
В тех случаях, когда предприятие представляет собой территориально распределенную структуру, зачастую сохраняется потребность в ведении единой системы учета. То есть необходимо иметь возможность работать в едином пространстве документов, получать отчеты, отражающие состояние дел как в территориально удаленных подразделениях предприятия, так и на предприятии в целом и т.п. При этом не всегда имеется возможность организовать работу всех подразделений с единой информационной базой в режиме он-лайн.
Для решения подобных задач предназначена компонента "Управление распределенными ИБ". С помощью указанной компоненты можно организовать двухуровневую структуру информационных баз (ИБ) системы 1С:Предприятие, состоящую из одной центральной и нескольких периферийных информационных баз, работающих с единой конфигурацией. При этом система будет стремиться поддерживать одинаковое состояние объектов данных во всех узлах распределенной ИБ.
Содержимое информационных баз синхронизируется путем переноса измененных объектов данных между каждой из периферийных и центральной ИБ. Для переноса данных используются так называемые файлы переноса данных. Перенос изменений выполняется только между центральной и периферийными ИБ. Перенос данных непосредственно между периферийными ИБ невозможен. Поэтому изменения данных, произведенные в одном из периферийных узлов распределенной ИБ попадают в другие периферийные узлы только через центральную ИБ.
В простейшем случае (по умолчанию) областью распространения изменений для всех объектов является вся распределенная ИБ. Таким образом, в случае если в течение какого-то времени изменения данных системы не будут производиться, и, в то же время, будут произведены все необходимые действия по обмену изменениями между узлами распределенной ИБ, то все узлы будут содержать абсолютно одинаковые данные.
В некоторых случаях может возникнуть необходимость в том, чтобы объекты того или иного типа никогда не попадали в те или иные узлы распределенной ИБ или никогда не покидали места своего создания. Для обеспечения такой возможности предназначен механизм настройки параметров миграции объектов. С его помощью можно ограничить распространение изменений объектов того или иного вида. Кроме того, в версии 7.7 системы 1С:Предприятие можно создавать периферийные ИБ, которые будут принимать информацию о измененных объектах из центральной ИБ, но не будут передавать изменения, сделанные в них самих.
Механизмы распространения изменений объектов работают полностью автоматически. Разработчик конфигурации лишен возможности вмешиваться в функционирование этих механизмов. Для того, чтобы механизмы распределенной ИБ начали работать, не нужно производить никаких специальных действий по конфигурированию системы.
Однако, для того, чтобы документы, элементы справочников и другие объекты, созданные в разных узлах распределенной ИБ, имели заведомо непересекающиеся пространства номеров, кодов и т. п., может потребоваться внести в конфигурацию некоторые изменения. Также изменения в конфигурации должны вноситься при необходимости обеспечить специальные ограничения работы пользователей на периферийных информационных базах.
Для переноса измененных объектов в распределенной ИБ и для первичного создания периферийной ИБ используется файл переноса данных. Он представляет собой упакованный (сжатый) файл, содержащий объекты информационной базы (все при создании периферийной ИБ или измененные при передаче изменений) в специальном формате. Формат данного файла не предназначен для использования его способами отличными от тех, которые предусмотрены механизмами выгрузки/загрузки и передачи изменений. Файл переноса фактически отражает содержимое объектов информационной базы в формате, не зависящем от формата базы данных. Это позволяет использовать в распределенной информационной системе в различных узлах различные форматы хранения данных, поддерживаемые системой 1С:Предприятие (DBF/CDX и MS SQL Server).
Регистрация изменений
Перенос измененных данных производится "пообъектно". То есть единицей переноса данных является так называемый ведущий объект. С точки зрения работы в распределенной информационной базе в 1С:Предприятии существуют следующие типы ведущих объектов:
константа,
элемент справочника,
документ,
календарь,
счет бухгалтерского учета,
типовая операция.
Вместе с документами переносятся все действия, выполняемые ими в процессе проведения: движения регистров, акты расчета, бухгалтерская операция, проводки. В случае, если при проведении документа производятся изменения периодических реквизитов элемента справочника, то производится перенос всего элемента справочника.
Регистрация изменений объектов производится автоматически при любом изменении объекта, независимо от того каким способом это изменение производилось (интерактивно или из встроенного языка). Кроме того в версии 7.7 системы 1С:Предприятие для таких объектов как элементы справочников и документы появилась возможность управления регистрацией изменений. Для этого у соответствующих объектов метаданных введен признак "Автоматическая регистрация изменений". Если этот признак установлен (значение по умолчанию), то автоматическая регистрация производится, а если признак сброшен, то регистрация не производится и изменения объектов в распределенной ИБ не распространяются. Но и в данном случае, при выполнении записи изменений объектов из встроенного языка можно управлять регистрацией изменений с помощью метода встроенного языка РегистрацияИзменений().
Регистрация изменений ведущих объектов производится в специальной служебной таблице. При этом фиксируются следующие данные об изменении объекта:
Сам ведущий объект;
Идентификатор той ИБ, в которую должно быть передано изменение;
Идентификатор ИБ, в которую должно быть передано изменение, служит для отслеживания переноса данных в каждую из ИБ, с которой данная ИБ обменивается данными. Таким образом, при изменении какого-либо объекта в центральной ИБ в таблицу будет помещено по одной записи для каждой из зарегистрированных периферийных информационных баз. Если же изменение объекта происходит в периферийной ИБ, то в таблицу будет занесена только одна запись, соответствующая центральной ИБ, так как каждая из периферийных ИБ непосредственно взаимодействует только с центральной.
Заметим, что удаление объекта является частным случаем изменения. Оно также помечается в таблице регистрации изменений и передается при выгрузке.
Выгрузка и загрузка изменений
Каждая выгрузка изменений осуществляется в адрес конкретной ИБ. В файл переноса, создаваемый при выгрузке попадают все объекты, записи об изменениях которых содержатся в таблице регистрации изменений для данной ИБ.
Заметим, что выгружаются не изменения объектов, а сами измененные объекты. То есть, если в документе изменилось значение одного реквизита, то будет передаваться весь документ и он будет полностью перезаписан на той ИБ, в которую переносится. Как уже отмечалось, вместе с документом будут перенесены и сделанные им движения регистров, операция и проводки. Если изменяется любой реквизит справочника, то передается полностью весь элемент. При этом история периодических реквизитов передается целиком. Последнее означает, что изменения сделанные в истории периодического реквизита элемента на в двух ИБ не будут сливаться вместе.
В процессе выгрузки в таблице регистрации изменений отмечается выгрузка изменений объектов.
При загрузке файла переноса данных помимо загрузки измененных данных выполняется так называемый прием подтверждений.
В случае, когда пришло подтверждение на получение выгрузки, содержащей последнее изменение объекта, запись об изменении удаляется из таблицы регистрации. То есть записи об изменении объектов данных хранятся в таблице регистрации до тех пор, пока не будет получено подтверждение о доставке измененного объекта по назначению.
Причем выгрузка измененного объекта будет производиться до тех пор, пока не будет получено подтверждение, о доставке изменения. Это значит, что если выполнять перенос все время в одном направлении и не выполнять обратного переноса то объем файла переноса данных будет все время расти, так как каждый раз будут передаваться все объекты, измененные после последнего полученного подтверждения.
При загрузке изменений объектов из периферийной ИБ в центральную, в таблицу регистрации изменений (если, конечно, параметры миграции настроены соответствующим образом) заносятся записи, указывающие, что загруженные из периферийной ИБ изменения объектов должны быть переданы в другие периферийные ИБ.
Изменения конфигурации
Как уже отмечалось, при работе с распределенной ИБ, конфигурация системы может быть изменена только в центральном узле.
Для регистрации изменений конфигурации и передачи ее на периферийные ИБ используется тот же механизм, что и для объектов данных. При записи измененной конфигурации, в таблицу регистрации изменений объектов по числу известных периферийных ИБ заносятся записи, фиксирующие факт изменения конфигурации.
После записи измененной конфигурации в распределенной ИБ складывается такая ситуация, что центральная и периферийные ИБ работают фактически с разными конфигурациями. В таком состоянии созданные на периферийной ИБ файлы переноса данных не могут быть загружены на центральной ИБ по той причине, что в условиях различных конфигураций содержащаяся в файле информация не может быть правильно интерпретирована. Обмен будет восстановлен только после того, как в периферийную ИБ будет загружена измененная конфигурация с центральной ИБ. То есть после изменения конфигурации требуется выполнить перенос из центральной ИБ в каждую из периферийных, а уже затем выполнять перенос из периферийных ИБ в центр.
Перенос измененной конфигурации в периферийные ИБ осуществляется тем же способом, что и перенос измененных объектов данных. В процессе очередной выгрузки из центральной ИБ, в файл переноса данных целиком включается измененная конфигурация, если, конечно, в таблице регистрации изменений содержится запись о том, что измененную конфигурацию следует передать в соответствующую периферийную ИБ. Выгрузка конфигурации также будет производиться до получения извещения о приеме измененной конфигурации.
Заметим, что конфигурация считается измененной при любых изменениях метаданных, форм, модулей, таблиц конфигурации, наборов прав, пользовательских интерфейсов, описаний. В состав конфигурации не входит список пользователей, а также внешние по отношению к файлу конфигурации (1CV7.MD) файлы (внешние отчеты, отдельно записанные таблицы и тексты). И эти внешние файлы не переносятся механизмом управления распределенной ИБ. Поэтому при конфигурировании распределенной системы не рекомендуется использовать в конфигурации находящиеся в отдельных файлах модули, таблицы и отчеты.
Для изменения уже работающей конфигурации можно рекомендовать использовать механизм загрузки измененной конфигурации. Он позволяет специалисту скопировать конфигурацию, выполнить в ней все необходимые изменения, отладить внесенные изменения (этот процесс может занять и несколько дней), а затем загрузить измененную конфигурацию в центральную ИБ, после чего изменения будут распространены на все периферийные ИБ с очередной передачей изменений. Такая последовательность позволит избежать многократной передачи измененной конфигурации в периферийные ИБ в процессе ее модернизации.
При загрузке файла переноса данных на периферийной ИБ, этап загрузки измененной конфигурации (если, конечно, она содержится в файле переноса данных) предшествует этапу загрузки измененных объектов данных. В случае неудачного завершения загрузки конфигурации, загрузка объектов данных производиться не будет и информационная база останется в том же состоянии, что и была до начала загрузки.
Загрузка измененной конфигурации может завершиться неудачей, если измененная конфигурация не соответствует существующим данным. Например, было уменьшено число уровней справочника, а новое число уровней оказывается меньшим, чем фактически содержащееся в справочнике или в других подобных случаях. Если такое произошло, то следует привести данные в соответствие с новой конфигурацией или изменить конфигурацию в центральной ИБ и заново произвести выгрузку, чтобы ликвидировать возникшее противоречие.
Коллизии
При работе в реальных распределенных ИБ один и тот же объект может изменяться одновременно в различных узлах распределенной ИБ. И при переносе измененных объектов из одной ИБ в другую может случиться так, что в какую-либо ИБ будет загружаться объект, зарегистрированный в самой этой ИБ как измененный. Такая ситуация носит название коллизии. Приведем описание действий системы в наиболее типовых вариантах коллизий.
Один и тот же объект изменен более чем в одной ИБ.
Общий принцип здесь состоит в том, что "главным" считается изменение, произведенное в центральной ИБ. Отработка ситуации различается в зависимости от того, на какой ИБ - центральной или периферийной коллизия обнаружена. Если коллизия обнаружена на центральной ИБ, то есть при загрузке файла переноса из периферийной ИБ обнаружено, что один из измененных объектов также изменен и в центральной ИБ, то изменения объекта в центральную ИБ не загружаются. При этом гарантируется, что при очередной выгрузке в адрес периферийной ИБ будет передано состояние объекта как оно есть в центральной ИБ. Если же коллизия обнаружена на периферийной ИБ, то изменения объекта, прибывшие из центральной ИБ загружаются.
Объект, измененный в одной ИБ, удален в другой.
В данном случае принцип заключается в том, что изменение всегда "главнее" удаления. В случае, если на центральную ИБ прибывает файл переноса, в котором содержится информация, что некоторый объект удален на периферийной ИБ, то в центральной ИБ объект не удаляется, а в записи таблицы регистрации изменений данный объект помечается как измененный. То есть при очередном обмене объект будет восстановлен в той ИБ, в которой он был удален, причем само содержание объекта будет соответствовать той ИБ, которая "отвергла" удаление.
Аналогичные действия производятся, если коллизия обнаружена на периферийной ИБ.
Объект, удаленный в одной ИБ, не может быть удален в другой по причине наличия ссылок на него.
При загрузке изменений, если загружается информация об удалении объектов, автоматически включается механизм контроля ссылочной целостности и выполняется проверка наличия ссылок в данной ИБ на объекты, которые переданы как удаленные.
В случае обнаружения коллизии такого рода, вне зависимости от того на какой из ИБ она была обнаружена, выполняется следующее: удаление не выполняется, а в таблицу регистрации изменений заносится запись о том, что объект должен быть перенесен в адрес той ИБ, из которой была прислана информация о его удалении.
При очередном обмене объект восстанавливается в той ИБ, в которой он был удален, однако само содержание объекта будет соответствовать той ИБ, которая "отвергла" удаление.
Таким образом, управление распределенной информационной базой имеет определенную стратегию автоматического разрешения любых коллизий с описанными приоритетами. Однако, в реальных условиях рекомендуется средствами конфигурации определить возможные действия пользователей на различных узлах таким образом, чтобы исключить или минимизировать вероятность возникновения коллизий. Основным путем является определения средствами конфигурации "ответственного" узла за каждый ведущий объект в распределенной ИБ и ограничение всем остальным возможности его редактирования и удаления. Определение "ответственных" должно происходить исходя из логики работы предприятия. Очевидно, что многие виды объектов можно разрешить изменять только в центральной ИБ (например, список складов). Для многих объектов можно рекомендовать средствами встроенного языка установить возможность изменения только на той ИБ, на которой они созданы, например для документов.
Параметры миграции
С помощью настройки параметров миграции можно ограничивать области распространения изменений объектов. Настройка параметров миграции происходит по видам "ведущих" объектов. То есть для каждого вида "ведущих" объектов можно определить конкретную настройку параметров миграции. В настройке параметров миграции объектов ведущую роль играет выбор того или иного варианта области распространения изменений объектов данного вида. Существуют три варианта настройки области распространения:
Все информационные базы. Данный вариант настройки используется по умолчанию для всех объектов. В этом случае любые изменения объектов данного типа будут распространяться по всем узлам распределенной ИБ. Этот вариант обеспечивает полную синхронизацию объектов данного вида во всей распределенной ИБ. Очевидно, что этот вариант наиболее прост для конфигурирования.
Место создания. Данный вариант настройки также является довольно простым. В этом случае изменения объекта не передаются в другие ИБ. При такой настройке параметров миграции, объект данного вида никогда не "покидает" места своего создания и не появляется в других ИБ. Однако при выборе данного варианта следует учитывать возможные ссылки на объекты данного вида из объектов других видов, имеющих другие параметры миграции. Например, если установить такой вариант для справочника, и в документах, которые участвуют в обмене, будет содержаться реквизит типа справочник данного вида, то при переносе документа получится неразрешенная ссылка.
Место создания и центр. При таком варианте настройки области распространения объектов существенную роль играет понятие места создания объекта. Местом создания объекта считается ИБ, в которой был создан конкретный объект. Естественно, что различные объекты одного вида могут быть созданы в различных ИБ. Однако место создания объекта может быть определено не для всех видов "ведущих" объектов. Для таких объектов как константы, календари или корректные проводки место создания не определено. Поэтому для этих видов объектов вариант настройки "Место создания и центр" не может быть установлен.
В случае выбора такого варианта области распространения, объекты данного вида помимо места их создания попадают еще и на центральную ИБ. То есть, в случае, если для некоторого вида объектов установлена область распространения "Место создания и центр", то для объектов этого вида, созданных на периферийной ИБ, их изменения будут передаваться между местом их создания и центральной ИБ. Для объектов того же вида, созданных на центральной ИБ, изменения не будут передаваться никуда. С помощью такого варианта области распространения можно добиться такого эффекта, что все объекты того или иного вида будут "собираться" на центральной ИБ, а на любой из периферийных ИБ будут находиться только те объекты, для которых она является местом создания.
В случае выбора области распространения "Место создания и центр", для вида объекта можно задать перечень периферийных узлов распределенной ИБ, которые дополнительно включаются в область распространения всех объектов данного вида. Этот перечень задается как список кодов периферийных ИБ, разделенный запятыми. При задании кодов ИБ допускается использование символов-заменителей '*'. Символ-заменитель должен завершать последовательность символов, образующих код одной или нескольких периферийных ИБ. Таким образом, "A*" представляет собой обозначение всех периферийных ИБ, коды которых начинаются символом 'А'. Последовательность "A*B" является ошибочной, так как символ '*' не завершает последовательность символов, представляющих код периферийной ИБ.
Кроме того, как отмечалось выше, дополнительной возможностью управлять распространением изменений объектов в версии 7.7 системы 1С:Предприятие является особый вид периферийных ИБ, которые получают изменения из центральной ИБ, а сами информацию о сделанных в них изменениях не передают. Для создания периферийной ИБ такого рода, надо при ее инициализации указать признак "Только получатель".
Отдельно стоит рассмотреть случай, когда параметры миграции объектов изменяются в процессе изменения конфигурации уже работающей системы. Изменения параметров миграции для каждого из объектов производится независимо от других. То есть, Конфигуратор не отслеживает ссылки между объектами при настройке параметров миграции. Таким образом, при определенных вариантах настройки параметров миграции у некоторых объектов могут появиться ссылки, указывающие "никуда". Ответственность за сохранение ссылочной целостности в распределенных ИБ возлагается на лицо, занимающееся конфигурированием системы. Общим правилом настройки параметров миграции является определение области миграции для конкретного вида объектов равной более широкой, чем область миграции ссылающихся на него объектов. Например, для справочника область миграции должна быть определена не уже, чем области миграции документов и справочников, в которых есть реквизиты типа "справочник" данного вида. Если, например, измерение регистра имеет тип "справочник" данного вида, то область миграции справочника должна покрывать области миграции всех документов, которые могут записать движения данного регистра.
При изменении параметров миграции того или иного объекта система старается привести имеющиеся данные в соответствие с новыми параметрами. Общим принципом здесь является то, что при изменении параметров миграции объекты никогда ни в каком узле распределенной ИБ не удаляются. Даже в том случае, если в соответствии с вновь установленными параметрами миграции их там быть не должно. Изменения производятся лишь в таблице регистрации изменений. Рассмотрим случаи изменения параметров миграции объектов подробнее.
Наиболее простой случай - это смена любого из вариантов области распространения на вариант "Место создания". В этом случае из таблицы регистрации изменений удаляются все записи по данному виду объектов. То есть все изменения объектов, еще не переданные в другие ИБ, не будут переданы. При этом, все объекты для которых данная ИБ не является местом создания, не будут удалены. Просто их изменения (как и изменения других объектов данного вида) не будут больше передаваться в другие ИБ.
Следующий случай - это смена области распространения "Место создания" на варианты "Все информационные базы" или "Место создания и центр". В этом случае в таблицу регистрации изменений заносятся записи для передачи всех объектов, для которых текущая ИБ является местом создания во все ИБ, в которые должны передаваться изменения в соответствии с вновь заданной настройкой. В случае, если такая смена производится для объектов, для которых место создания не определено (константы, календари, корректные проводки), то записи в таблицу регистрации изменений будут произведены только в центральной ИБ. Этими двумя вариантами и ограничиваются возможные случаи изменения параметров миграции для такого рода объектов. Все остальные случаи возможны только для тех объектов, для которых место создания можно определить.
При изменении области распространения объектов с "Место создания и центр" на "Все информационные базы", какие-либо действия предпринимаются только в центральной ИБ. В этом случае определяется список периферийных ИБ, попавших в список дополнительно включаемых в область распространения, но ранее в него не входивших. После этого производится обход всех объектов данного вида и для каждого из объектов в таблицу регистрации изменений вносятся записи для передачи состояния объекта в каждую из попавших в список периферийных ИБ, за исключением ИБ места создания объекта.
Последний и самый сложный случай - это изменение области распространения объектов с "Все информационные базы" на "Место создания и центр" или изменение списка дополнительных ИБ в варианте "Место создания и центр". Действия, производимые в данном случае различаются в зависимости от того, производятся они в центральной ИБ или в периферийной. В центральной ИБ для каждой из периферийных ИБ, не попавших в новый перечень дополнительно включаемых в область распространения, выполняется удаление из таблицы регистрации изменений записей соответствующих данному виду объектов, но только для тех объектов, для которых эта периферийная ИБ не является местом создания. Затем определяется список периферийных ИБ, попавших в список дополнительно включаемых в область распространения, но ранее в него не входивших. Естественно, что в случае, если предыдущим вариантом настройки области распространения было "Все информационные базы", то этот список окажется пустым. Затем, как и в предыдущем случае, производится обход всех объектов данного вида и для каждого из объектов в таблицу регистрации изменений вносятся записи для передачи объекта в каждую из попавших в список периферийных ИБ, за исключением ИБ места создания объекта.
Проблемы конфигурирования и администрирования
При разработке конфигурации для распределенной ИБ проявляется ряд объективно существующих проблем, которые решаются как средствами конфигурации, так и административными решениями.
Очевидной проблемой, которая уже упоминалась выше, является уникальная и последовательная нумерация документов и элементов справочников. Для организации уникальной нумерации используется механизм префиксов. Для его включения в конфигурацию, прежде всего, следует выработать некоторую дисциплину, зависимости префикса от ИБ, в которой создается объект. В простейшем случае это может быть собственно код ИБ. Однако часто префикс может автоматически определяться на каждой ИБ, но не являться ее кодом, так как он может участвовать в печатных формах документов и должен быть понятным для пользователей системы. Более сложной задачей является обеспечение сквозной нумерации объектов без префиксов в случае, когда такая нумерация регламентируется нормативными документами. Особенно сложным является обеспечение строго последовательной нумерации. Очевидно, что полного решения данной проблемы не может быть в принципе, так как объекты создаваемые динамически в независимых системах не могут иметь строгой сквозной нумерации. Отчасти данная проблема решается с помощью введения диапазонов номеров, выделяемых для каждой ИБ. Следует заметить, что номера документов и коды справочников не являются внутренними идентификаторами и их уникальность для системы не обязательна. Это значит, что поддержку уникальность номеров и кодов можно отключить для тех видов, объектов, для которых она не нужна. Кроме того, средствами конфигурации можно организовать перенумерацию объектов, например в центральной ИБ. Однако следует иметь ввиду, что эти изменения будут передаваться как и любые другие изменения, что может вызвать достаточно большой объем передаваемых между узлами данных.
Более сложной проблемой является ситуация, когда возникает необходимость использования некоторого нового объекта в двух и более узлах одновременно, до осуществления передачи данных. Например, новый товар должен быть введен и на центральной ИБ и на периферийной. Важно понимать, что созданный ведущий объект системы 1С:Предприятие обладает некоторой сущностью - внутренним идентификатором, который уникален во всей распределенной системе. То есть один и тот же объект не может быть введен в двух узлах. Даже при полном соответствии кодов, номеров и всех данных это будут два разных объекта. Такой принцип необходим для четкой работы системы со всех точек зрения.
Заметим, что возможные варианты ввода двух объектов и затем автоматической замены на центральной ИБ всех ссылок на один из объектов, достаточно сложны в реализации и весьма ненадежны.
Поэтому, на наш взгляд, решение проблемы должно лежать в области администрирования системы. Технология работы пользователей должна быть построена таким образом, чтобы ввод объекта производился на одном узле.
В отдельных случаях может использоваться следующее решение. В справочник заранее вносится некоторое количество новых элементов со специальными кодами или в специальную группу. При появлении необходимости ввода нового товара реально не вводится новый элемент, а изменяется один этих элементов. При этом административными силами должно быть обеспечено идентичное изменение одного и того же "зарезервированного" объекта в тех узлах распределенной ИБ, в которой он должен быть использован до обмена данными. При обмене данными сами реквизиты элемента будут системой синхронизированы, а ссылки в других объектах, разумеется будут идентичными, так как использовался один и тот же объект.
В любых случаях следует учитывать, что раздельный ввод и использование объектов потребует от пользователей правильного ввода данных. Так, например, при вводе нового товара в двух узлах с разными ценами могут иметь место серьезные ошибки в оформлении документов.
Еще одна проблема, с которой приходится сталкиваться при конфигурировании распределенной ИБ, это правильное поддержание механизмов учета компонент при неполной миграции объектов. Следует учитывать, что итоги оперативного и бухгалтерского учета не являются самостоятельными объектами. Они не переносятся, а рассчитываются на основании перенесенных движений регистров и проводок. Движения регистров и проводки переносятся соответственно только вместе с документами. Таким образом, для правильного состояния итогов на некоторой ИБ, на нее должны переноситься все документы, осуществляющие движения регистров или записывающие проводки влияющие на эти итоги. С другой стороны, это не означает, что переноситься должны все документы, записывающие движения конкретного регистра и проводки. Например, если на периферийной ИБ вводятся документы, выполняющие движения по одному складу, и итоги регистра учета товарного запаса в данной ИБ нужны только по данному складу, то, разумеется, в данном узле будет достаточно наличия всех документов выполняющих движения регистров по данному складу. Это достигается установкой параметра миграции "Место создания и центр".
Компоненты Delphi для работы с базами данных были созданы в расчете на работу с SQL и архитектурой клиент/сервер. При работе с ними вы можете воспользоваться характеристиками расширенной поддержки удаленных серверов. Delphi осуществляет эту поддержку двумя способами.
1. Введение
Во-первых, непосредственные команды из Delphi позволяют разработчику управлять таблицами, устанавливать пределы, удалять, вставлять и редактировать существующие записи.
Второй способ заключается в использовании запросов на языке SQL, где строка запроса передается на сервер для ее разбора, оптимизации, выполнения и передачи обратно результатов.
Данный документ делает акцент на втором методе доступа к базам данных, на основе запросов SQL (pass-through). Авторы не стремились создать курсы по изучению синтаксиса языка SQL и его применения, они ставили перед собой цель дать несколько примеров использования компонентов TQuery и TStoredProc. Но чтобы сделать это, необходимо понимать концепцию SQL и знать как работают selects, inserts, updates, views, joins и хранимые процедуры (stored procedures). Документ также вскользь касается вопросов управления транзакциями и соединения с базой данных, но не акцентирует на этом внимание. Итак, приступая к теме, создайте простой запрос типа SELECT и отобразите результаты.
2. Компонент TQuery
Если в ваших приложениях вы собираетесь использовать SQL, то вам непременно придется познакомиться с компонентом TQuery. Компоненты TQuery и TTable наследуются от TDataset. TDataset обеспечивает необходимую функциональность для получения доступа к базам данных. Как таковые, компоненты TQuery и TTable имеют много общих признаков. Для подготовки данных для показа в визуальных компонентах используется все тот же TDatasource. Также, для определения к какому серверу и базе данных необходимо получить доступ, необходимо задать имя псевдонима. Это должно выполняться установкой свойства aliasName объекта TQuery.
Свойство SQL
Все же TQuery имеет некоторую уникальную функциональность. Например, у TQuery имеется свойство с именем SQL. Свойство SQL используется для хранения SQL-запроса. Ниже приведены основные шаги для составления запроса, где все служащие имеют зарплату свыше $50,000.
Создайте объект TQuery
Задайте псевдоним свойству DatabaseName. (Данный пример использует псевдоним IBLOCAL, связанный с демонстрационной базой данных employee.gdb).
Выберите свойство SQL и щелкните на кнопке с текстом - '...' (три точки, Инспектор Объектов - В.О.). Должен появиться диалог редактора списка строк (String List Editor).
Введите:
. Нажмите OK.
Выберите в Инспекторе Объектов свойство Active и установите его в TRUE.
Разместите на форме объект TDatasource.
Установите свойство Dataset у TDatasource в Query1.
Разместите на форме TDBGrid.
Установите его свойство Datasource в Datasource1.
Свойство SQL имеет тип TStrings. Объект TStrings представляет собой список строк, и чем-то похож на массив. Тип данных TStrings имеет в своем арсенале команды добавления строк, их загрузки из текстового файла и обмена данными с другим объектом TStrings. Другой компонент, использующий TStrings - TMemo. В демонстрационном проекте ENTRSQL.DPR (по идее, он должен находится на отдельной дискетте, но к "Советам по Delphi" она не прилагается - В.О.), пользователь должен ввести SQL-запрос и нажать кнопку "Do It" ("сделать это"). Результаты запроса отображаются в табличной сетке. В Листинге 1 полностью приведен код обработчика кнопки "Do It".
Листинг 1
Свойство Params
Этого должно быть достаточно для пользователя, знающего SQL. Тем не менее, большинство пользователей не знает этого языка. Итак, ваша работа как разработчика заключается в предоставлении интерфейса и создании SQL-запроса. В Delphi, для создания SQL-запроса на лету можно использовать динамические запросы. Динамические запросы допускают использование параметров. Для определения параметра в запросе используется двоеточие (:), за которым следует имя параметра. Ниже приведе пример SQL-запроса с использованием динамического параметра:
Если вам нужно протестировать, или установить для параметра значение по умолчанию, выберите свойство Params объекта Query1. Щелкните на кнопке '...'. Должен появиться диалог настройки параметров. Выберите параметр Dept_no. Затем в выпадающем списке типов данных выберите Integer. Для того, чтобы задать значение по умолчанию, введите нужное значение в поле редактирования "Value".
Для изменения SQL-запроса во время выполнения приложения, параметры необходимо связать (bind). Параметры могут изменяться, запрос выполняться повторно, а данные обновляться. Для непосредственного редактирования значения параметра используется свойство Params или метод ParamByName. Свойство Params представляет из себя массив TParams. Поэтому для получения доступа к параметру, необходимо указать его индекс. Для примера,
Query1.params[0].asInteger := 900;
Свойство asInteger читает данные как тип Integer (название говорит само за себя). Это не обязательно должно указывать но то, что поле имеет тип Integer. Например, если тип поля VARCHAR(10), Delphi осуществит преобразование данных. Так, приведенный выше пример мог бы быть записан таким образом:
Query1.params[0].asString := '900';
или так:
Query1.params[0].asString := edit1.text;
Если вместо номера индекса вы хотели бы использовать имя параметра, то воспользуйтесь методом ParamByName. Данный метод возвращает объект TParam с заданным именем. Например:
Query1.ParamByName('DEPT_NO').asInteger := 900;
В листинге 2 приведен полный код примера.
Листинг 2
Обратите внимание на процедуру, первым делом подготовливающую запрос. При вызове метода prepare, Delphi посылает SQL запрос на удаленный сервер. Сервер выполняет грамматический разбор и оптимизацию запроса. Преимущество такой подготовки запроса состоит в его предварительном разборе и оптимизации. Альтернативой здесь может служить подготовка сервером запроса при каждом его выполнении. Как только запрос подготовлен, подставляются необходимые новые параметры, и запрос выполняется.
[pagebreak]
Источник данных
В предыдущем примере пользователь мог ввести номер отдела, и после выполнения запроса отображался список сотрудников этого отдела. А как насчет использования таблицы DEPARTMENT, позволяющей пользователю легко перемещаться между пользователями и отделами?
Примечание: Следующий пример использует TTable с именем Table1. Для Table1 имя базы данных IBLOCAL, имя таблицы - DEPARTMENT. DataSource2 TDatasource связан с Table1. Таблица также активна и отображает записи в TDBGrid.
Способ подключения TQuery к TTable - через TDatasource. Есть два основных способа сделать это. Во-первых, разместить код в обработчике события TDatasource OnDataChange. Например, листинг 3 демонстрирует эту технику.
Листинг 3 - Использования события OnDataChange для просмотра дочерних записей
Техника с использованием OnDataChange очень гибка, но есть еще легче способ подключения Query к таблице. Компонент TQuery имеет свойство Datasource. Определяя TDatasource для свойства Datasource, объект TQuery сравнивает имена параметров в SQL-запросе с именами полей в TDatasource. В случае общих имен, такие параметры заполняются автоматически. Это позволяет разработчику избежать написание кода, приведенного в листинге 3 (*** приведен выше ***).
Фактически, техника использования Datasource не требует никакого дополнительного кодирования. Для поключения запроса к таблице DEPT_NO выполните действия, приведенные в листинге 4.
Листинг 4 - Связывание TQuery c TTable через свойство Datasource
Выберите у Query1 свойство SQL и введите:
Выберите свойство Datasource и назначьте источник данных, связанный с Table1 (Datasource2 в нашем примере)
Выберите свойство Active и установите его в True
Это все, если вы хотите создать такой тип отношений. Тем не менее, существуют некоторые ограничения на параметризованные запросы. Параметры ограничены значениями. К примеру, вы не можете использовать параметр с именем Column или Table. Для создания запроса, динамически изменяемого имя таблицы, вы могли бы использовать технику конкатенации строки. Другая техника заключается в использовании команды Format.
Команда Format
Команда Format заменяет параметры форматирования (%s, %d, %n и пр.) передаваемыми значениями. Например,
Format('Select * from %s', ['EMPLOYEE'])
Результатом вышеприведенной команды будет 'Select * from EMPLOYEE'. Функция буквально делает замену параметров форматирования значениями массива. При использовании нескольких параметров форматирования, замена происходит слева направо. Например,
Результатом команды форматирования будет 'Select * from EMPLOYEE where EMP_ID=3'. Такая функциональность обеспечивает чрезвычайную гибкость при динамическом выполнении запроса. Пример, приведенный ниже в листинге 5, позволяет вывести в результатах поле salary. Для поля salary пользователь может задавать критерии.
Листинг 5 - Использование команды Format для создания SQL-запроса
В этом примере мы используем методы Clear и Add свойства SQL. Поскольку "подготовленный" запрос использует ресурсы сервера, и нет никакой гарантии что новый запрос будет использовать те же таблицы и столбцы, Delphi, при каждом изменении свойства SQL, осуществляет операцию, обратную "подготовке" (unprepare). Если TQuery не был подготовлен (т.е. свойство Prepared установлено в False), Delphi автоматически подготавливает его при каждом выполнении. Поэтому в нашем случае, даже если бы был вызван метод Prepare, приложению от этого не будет никакой пользы.
Open против ExecSQL
В предыдущих примерах TQuerie выполняли Select-запросы. Delphi рассматривает результаты Select-запроса как набор данных, типа таблицы. Это просто один класс допустимых SQL-запросов. К примеру, команда Update обновляет содержимое записи, но не возвращает записи или какого-либо значения. Если вы хотите использовать запрос, не возвращающий набор данных, используйте ExecSQL вместо Open. ExecSQL передает запрос для выполнения на сервер. В общем случае, если вы ожидаете, что получите от запроса данные, то используйте Open. В противном случае допускается использование ExecSQL, хотя его использование с Select не будет конструктивным. Листинг 6 содержит код, поясняющий сказанное на примере.
Листинг 6
Все приведенные выше примеры предполагают использования в ваших приложениях запросов. Они могут дать солидное основание для того, чтобы начать использовать в ваших приложениях TQuery. Но все же нельзя прогнозировать конец использования SQL в ваших приложених. Типичные серверы могут предложить вам другие характеристики, типа хранимых процедур и транзакций. В следующих двух секциях приведен краткий обзор этих средств.
[pagebreak]
3. Компонент TStoredProc
Хранимая процедура представляет собой список команд (SQL или определенного сервера), хранимых и выполняемых на стороне сервера. Хранимые процедуры не имеют концептуальных различий с другими типами процедур. TStoredProc наследуется от TDataset, поэтому он имеет много общих характеристик с TTable и TQuery. Особенно заметно сходство с TQuery. Поскольку хранимые процедуры не требуют возврата значений, те же правила действуют и для методов ExecProc и Open. Каждый сервер реализует работу хранимых процедур с небольшими различиями. Например, если в качестве сервера вы используете Interbase, хранимые процедуры выполняются в виде Select-запросов. Например, чтобы посмотреть на результаты хранимой процедуры, ORG_CHART, в демонстрационной базе данных EMPLOYEE, используйте следующих SQL-запрос:
При работе с другими серверами, например, Sybase, вы можете использовать компонент TStoredProc. Данный компонент имеет свойства для имен базы данных и хранимой процедуры. Если процедура требует на входе каких-то параметров, используйте для их ввода свойство Params.
4. TDatabase
Компонент TDatabase обеспечивает функциональность, которой не хватает TQuery и TStoredProc. В частности, TDatabase позволяет создавать локальные псевдонимы BDE, так что приложению не потребуются псевдонимы, содержащиеся в конфигурационном файле BDE. Этим локальным псевдонимом в приложении могут воспользоваться все имеющиеся TTable, TQuery и TStoredProc. TDatabase также позволяет разработчику настраивать процесс подключения, подавляя диалог ввода имени и пароля пользователя, или заполняя необходимые параметры. И, наконец, самое главное, TDatabase может обеспечивать единственную связь с базой данных, суммируя все операции с базой данных через один компонент. Это позволяет элементам управления для работы с БД иметь возможность управления транзакциями.
Транзакцией можно считать передачу пакета информации. Классическим примером транзакции является передача денег на счет банка. Транзакция должна состоять из операции внесения суммы на новый счет и удаления той же суммы с текущего счета. Если один из этих шагов по какой-то причине был невыполнен, транзакция также считается невыполненной. В случае такой ошибки, SQL сервер позволяет выполнить команду отката (rollback), без внесения изменений в базу данных. Управление транзакциями зависит от компонента TDatabase. Поскольку транзакция обычно состоит из нескольких запросов, вы должны отметить начало транзакции и ее конец. Для выделения начала транзакции используйте TDatabase.BeginTransaction. Как только транзакция начнет выполняться, все выполняемые команды до вызова TDatabase.Commit или TDatabase.Rollback переводятся во временный режим. При вызове Commit все измененные данные передаются на сервер. При вызове Rollback все изменения теряют силу. Ниже в листинге 7 приведен пример, где используется таблица с именем ACCOUNTS. Показанная процедура пытается передать сумму с одного счета на другой.
Листинг 7
И последнее, что нужно учесть при соединении с базой данных. В приведенном выше примере, TDatabase использовался в качестве единственного канала для связи с базой данных, поэтому было возможным выполнение только одной транзакции. Чтобы выполнить это, было определено имя псевдонима (Aliasname). Псевдоним хранит в себе информацию, касающуюся соединения, такую, как Driver Type (тип драйвера), Server Name (имя сервера), User Name (имя пользователя) и другую. Данная информация используется для создания строки соединения (connect string). Для создания псевдонима вы можете использовать утилиту конфигурирования BDE, или, как показано в примере ниже, заполнять параметры во время выполнения приложения.
TDatabase имеет свойство Params, в котором хранится информация соединения. Каждая строка Params является отдельным параметром. В приведенном ниже примере пользователь устанавливает параметр User Name в поле редактирования Edit1, а параметр Password в поле Edit2. В коде листинга 8 показан процесс подключения к базе данных:
Листинг 8
Этот пример показывает как можно осуществить подключение к серверу без создания псевдонима. Ключевыми моментами здесь являются определение DriverName и заполнение Params информацией, необходимой для подключения. Вам не нужно определять все параметры, вам необходимо задать только те, которые не устанавливаются в конфигурации BDE определенным вами драйвером базы данных. Введенные в свойстве Params данные перекрывают все установки конфигурации BDE. Записывая параметры, Delphi заполняет оставшиеся параметры значениями из BDE Config для данного драйвера. Приведенный выше пример также вводит такие понятия, как сессия и метод GetTableNames. Это выходит за рамки обсуждаемой темы, достаточно упомянуть лишь тот факт, что переменная session является дескриптором database engine. В примере она добавлена только для "показухи".
Другой темой является использование SQLPASSTHRU MODE. Этот параметр базы данных отвечает за то, как натив-команды базы данных, такие, как TTable.Append или TTable.Insert будут взаимодействовать с TQuery, подключенной к той же базе данных. Существуют три возможных значения: NOT SHARED, SHARED NOAUTOCOMMIT и SHARED AUTOCOMMIT. NOT SHARED означает, что натив-команды используют одно соединение с сервером, тогда как запросы - другое. Со стороны сервера это видится как работа двух разных пользователей. В любой момент времени, пока транзакция активна, натив-команды не будут исполняться (committed) до тех пор, пока транзакция не будет завершена. Если был выполнен TQuery, то любые изменения, переданные в базу данных, проходят отдельно от транзакции.
Два других режима, SHARED NOAUTOCOMMIT и SHARED AUTOCOMMIT, делают для натив-команд и запросов общим одно соединение с сервером. Различие между двумя режимами заключаются в передаче выполненной натив-команды на сервер. При выбранном режиме SHARED AUTOCOMMIT бессмысленно создавать транзакцию, использующую натив-команды для удаления записи и последующей попыткой осуществить откат (Rollback). Запись должна быть удалена, а изменения должны быть сделаны (committed) до вызова команды Rollback. Если вам нужно передать натив-команды в пределах транзакции, или включить эти команды в саму транзакцию, убедитесь в том, что SQLPASSTHRU MODE установлен в SHARED NOAUTOCOMMIT или в NOT SHARED.
5. Выводы
Delphi поддерживает множество характеристик при использовании языка SQL с вашими серверами баз данных. На этой ноте разрешите попрощаться и пожелать почаще использовать SQL в ваших приложениях.
Мне приходится часто менять клиентов, потому что работаю удаленно. Сделал одному – иди к другому. А еще я продаю свои программы через Интернет. При имеющейся специфике работы, заметил одну странность: примерно в двадцати пяти процентов случаев, предприятие, оплатившее работу программиста и принявшее его работу, не пользуется ею.
Начну с примеров
Фирма, продающая компьютеры, купили внушительный комплект программного обеспечения, все своевременно оплатили, купили необходимое торговое оборудование... Мы, соответственно, все им установили и приготовились запускать. Остановились на этапе, когда сотрудники фирмы, ответственные за ввод в эксплуатацию нового программного комплекса, должны внести в информацию по имеющимся в отделах остаткам. Для справки – это примерно пара сотен наименований. Но на этом все работы по проекту остановились, потому что остатки не были внесены к намеченному сроку, ни через неделю после срока, ни через месяц. Не внесены они и до сих пор, хотя прошло уже пол года. Официально мы договорились, что клиент нам позвонит, когда сотрудники освободятся и найдут время внести остатки. Сами понимаете, на небольших фирмах менеджеры – по совместительству еще и продавцы, еще и грузчики, и кассиры…
Еще пример
Достаточно крупный комбинат решил автоматизировать учет обедов собственным сотрудникам в счет зарплаты. Систему подготовили, протестировали, поставили. Обучили их специалиста. Все как обычно. Недавно узнал, что конечный пользователь нашу систему не использует. Оказывается, по весьма банальной причине: на приобретение нового компьютера руководство не выделяет средств, а на имеющемся оказалось недостаточно мощности. В свое время мы указывали им на необходимость более мощного компьютера, но в силу не совсем понятных мне внутренних интриг, этот вопрос был замят на уровне IT-отдела. В результате, автоматизация стала не эффективной, и от использования новой программы решено было отказаться.
Третий пример
Производственная фирма заказала автоматизацию учета. От фирмы был назначен специалист – постановщик ТЗ и в будущем - внедренец. Работу сделали, сдали, провели обучение внедренца (на углубленное внедрение и обучение нами всех сотрудников не выделили бюджет). Я перезвонил клиенту через пол года, чтобы узнать, не было ли замечено каких-либо багов в работе системы. С удивлением услышал, что учет по-прежнему ведется в Excel-е, потому что на глубокое, самостоятельное освоение новой системы у сотрудников нет времени, а специалист, которого мы обучали, уволился…
Хотелось бы обобщить имеющийся, скромный опыт по таким случаям, и порассуждать на тему, когда автоматизация учета становится не эффективной по вине заказчика.
Уже из приведенных примеров можно сделать одно важное заключение: во всех трех случаях явно, что администрация не была заинтересована в результате. В первом – директор не захотел останавливать продажи даже не день, чтобы довести начатое до конца, во втором и третьем был урезан бюджет, и решили сэкономить там, где этого делать было нельзя.
1. Незаинтересованность руководства в результатах
Для меня всегда было загадкой, зачем руководство той или иной фирмы вообще тратится на автоматизацию, если отчетов в excel-е достаточно, и нет желания доводить начатое до конца? Чего дирекция хочет добиться? Дань моде? Надоел ноющий главбух? Решили, что что-то пора менять, но что менять – не выяснили? Стоит напомнить, что грамотно поставленная автоматизация учета в торгово-производственных фирмах способна увеличить прибыль и уменьшить затраты. Хорошая автоматизация окупается достаточно быстро, и уже скоро начинает приносить прибыль и экономию. Но если руководство не оценило перспектив автоматизации или, что еще хуже, считает, что новый стол из красного дерева топ-менеджеру важнее нового сервера сисадмину, то вряд ли на такой фирме автоматизация будет успешной.
2. Ограниченный бюджет
Как правило, из первого следует второе. Когда руководство не совсем отдает себе отчет в том, чего они ждут от автоматизации, тогда возникают идеи, наподобие: «а давайте пригласим студента, и он все сделает, как надо», или «давайте посадим главбуха на сервер»... Я, конечно, не против подработки студентов и не сомневаюсь в потенциале российского студенчества, но хочу лишь сказать о том, что для внедрения серьезной системы учета простого умения программировать очень мало. Хороший внедренец должен уметь просчитать возможные последствия выбора той или иной стратегии автоматизации. Это достаточно кропотливая работа, требующая, прежде всего, большого практического опыта, понимание не только специфики учета предприятия, но и его неочевидных нюансов. В конце концов, такая работа требует настойчивости, потому что часто решения внедренцев могут встретить сопротивление со стороны заказчика, и нужно уметь отстоять свои предложения, основываясь, опять же, на собственном опыте, защищая интересы сопротивляющегося клиента. Вряд ли какой-либо студент, понимающий, что занимается временным, не свойственным ему делом, способен на такое. Поэтому, считаю, что экономия на уровне исполнителя – это почти гарантия неудавшейся автоматизации.
Это же относится и к неоправданной экономии на оборудовании. Как правило, сбой системы происходит в самом слабом ее звене и в самый неподходящий момент… Помню, как у одного моего клиента, смотрящего «сквозь пальцы» на предложение обновить сервер, этот сервер вдруг однажды сгорел, когда бухгалтерия делала годовой отчет. Печально было то, что архивирование данных не велось должным образом, опять же, не смотря на рекомендации: директор считал покупку пишущего cd-room (в то время) – не особенно необходимыми затратами. Систему, конечно, восстановили. Но я помню, как бухгалтерии пришлось две недели работать чуть ли не по ночам, чтобы восстановить потерянные за год данные по первичным документам. Кстати, после этого случая руководство все-таки купило в то время жутко дорогой сервер с райд-массивом…
3. Тендер на откатах
Где-то встречал в сети примерную статистику, какой процент тендеров на IT услуги в России выигрывается за счет откатов ответственному лицу. Статистика – не утешительна. Печально, что на откаты попадают в основном крупные заказчики, где сумма договора внушительна, и руководство напрямую не занимается подбором исполнителя, а поручает это собственному специалисту, который не всегда бывает доволен уровнем своей заработной платы. Практика показывает, что при таком раскладе, все работы бывают выполнены в срок, все документы подписаны, но сотрудники фирмы остаются недовольны результатами и не могут использовать внедренную систему в планируемом объеме по разным причинам. Соответственно, руководство не имеет требуемой аналитической базы и начинает выяснять, в чем причина. Такие разбирательства затягиваются надолго, часто сопровождаются кадровыми движениями и, в конечном итоге, поисками того, кто бы систему довел до ума…
4. К вопросу о лидерах отрасли
Хотел бы привести еще один пример, достаточно типичный. Фирма готова тратить деньги на автоматизацию, но не сориентировалась на рынке IT-услуг и обратилась к кому-то очень известному. В результате затраты превысили все разумные пределы, а итог оказался не совсем ожидаемым, хотя, возможно, приемлемым с натяжкой.
К сожалению, это только при покупке автомобиля можно руководствоваться рекламными буклетами, и, если позволяют средства, выбирать самое последнее из модельного ряда. В сфере IT-услуг, как показывает практика, все далеко не так, особенно в сфере автоматизации на базе продуктов фирмы «1С» фирмами-франчайзи. Если исполнитель – не на уровне масштабов компании «Intel Corporation», то его раскрученность совсем может не соответствовать качеству предлагаемых им услуг, а объемы клиентской сети, требующей постоянного сопровождения, могут не позволить заниматься новым клиентом на должном уровне. На фоне этого, стоило бы вспомнить о небольших фирмах, менее раскрученных, а потому не выигравших тендер, которые были бы просто счастливы получить крупного заказчика IT-услуг, даже с меньшей суммой договора, и были готовы отдать все силы на то, чтобы клиент остался доволен. Амбиции небольших коллективов, уровень их специалистов и заинтересованность в результатах работы часто оказываются выше, чем у раскрученных, больших компаний. Небольшие фирмы не могут допустить в работе того, что позволят себе монополии, потому что любая неудача может грозить такой фирме банкротством.
Я назвал лишь четыре, пожалуй, основных фактора, когда автоматизация не достигает результатов, и присходит это, отчасти, по вине заказчика. Наверняка, имеются и другие причины, но корень проблем, на мой взгляд, следует искать, прежде всего, в неправильной позиции руководства компании, которая выражается или в непонимании, зачем нужна автоматизация, или в неправильно выбранной стратегии решения этого вопроса. Там, где решения принимаются трезво и взвешенно, где оценивается уровень специалиста, а не его раскрученность на рынке, где руководство четко понимает, чего оно ждет от автоматизации в итоге – там все будет нормально, чего всем и желаю…
В этой статье я попытаюсь дать оценку быстродействию файловых систем, используемых в операционных системах WindowsNT/2000. Статья не содержит графиков и результатов тестирований, так как эти результаты слишком сильно зависят от случая, методик тестирования и конкретных систем, и не имеют почти никакой связи с реальным положением дел. В этом материале я вместо этого постараюсь описать общие тенденции и соображения, связанные с производительностью файловых систем. Прочитав данный материал, вы получите информацию для размышлений и сможете сами сделать выводы, понять, какая система будет быстрее в ваших условиях, и почему. Возможно, некоторые факты помогут вам также оптимизировать быстродействие своей машины с точки зрения файловых систем, подскажут какие-то решения, которые приведут к повышению скорости работы всего компьютера.
В данном обзоре упоминаются три системы - FAT (далее FAT16), FAT32 и NTFS, так как основной вопрос, стоящий перед пользователями Windows2000 - это выбор между этими вариантами. Я приношу извинение пользователям других файловых систем, но проблема выбора между двумя, внешне совершенно равнозначными, вариантами со всей остротой стоит сейчас только в среде Windows2000. Я надеюсь, всё же, что изложенные соображения покажутся вам любопытными, и вы сможете сделать какие-то выводы и о тех системах, с которыми вам приходится работать.
Данная статья состоит из множества разделов, каждый из которых посвящен какому-то одному вопросу быстродействия. Многие из этих разделов в определенных местах тесно переплетаются между собой. Тем не менее, чтобы не превращать статью в кашу, в соответствующем разделе я буду писать только о том, что имеет отношение к обсуждаемый в данный момент теме, и ни о чем более. Если вы не нашли каких-то важных фактов в тексте - не спешите удивляться: скорее всего, вы встретите их позже. Прошу вас также не делать никаких поспешных выводов о недостатках и преимуществах той или иной системы, так как противоречий и подводных камней в этих рассуждениях очень и очень много. В конце я попытаюсь собрать воедино всё, что можно сказать о быстродействии систем в реальных условиях.
Теория
Самое фундаментальное свойство любой файловой системы, влияющее на быстродействие всех дисковых операций - структура организации и хранения информации, т.е. то, как, собственно, устроена сама файловая система. Первый раздел - попытка анализа именно этого аспекта работы, т.е. физической работы со структурами и данными файловой системы. Теоретические рассуждения, в принципе, могут быть пропущены - те, кто интересуется лишь чисто практическими аспектами быстродействия файловых систем, могут обратиться сразу ко второй части статьи.
Для начала хотелось бы заметить, что любая файловая система так или иначе хранит файлы. Доступ к данным файлов - основная и неотъемлемая часть работы с файловой системой, и поэтому прежде всего нужно сказать пару слов об этом. Любая файловая система хранит данные файлов в неких объемах - секторах, которые используются аппаратурой и драйвером как самая маленькая единица полезной информации диска. Размер сектора в подавляющем числе современных систем составляет 512 байт, и все файловые системы просто читают эту информацию и передают её без какой либо обработки приложениям. Есть ли тут какие-то исключения? Практически нет. Если файл хранится в сжатом или закодированном виде - как это возможно, к примеру, в системе NTFS - то, конечно, на восстановление или расшифровку информации тратится время и ресурсы процессора. В остальных случаях чтение и запись самих данных файла осуществляется с одинаковой скоростью, какую файловую систему вы не использовали бы.
Обратим внимание на основные процессы, осуществляемые системой для доступа к файлам:
Поиск данных файла
Выяснение того, в каких областях диска хранится тот или иной фрагмент файла - процесс, который имеет принципиально разное воплощение в различных файловых системах. Имейте в виду, что это лишь поиск информации о местоположении файла - доступ к самим данным, фрагментированы они или нет, здесь уже не рассматривается, так как этот процесс совершенно одинаков для всех систем. Речь идет о тех "лишних" действиях, которые приходится выполнять системе перед доступом к реальным данным файлов.
На что влияет этот параметр: на скорость навигации по файлу (доступ к произвольному фрагменту файла). Любая работа с большими файлами данных и документов, если их размер - несколько мегабайт и более. Этот параметр показывает, насколько сильно сама файловая система страдает от фрагментации файлов.
NTFS способна обеспечить быстрый поиск фрагментов, поскольку вся информация хранится в нескольких очень компактных записях (типичный размер - несколько килобайт). Если файл очень сильно фрагментирован (содержит большое число фрагментов) - NTFS придется использовать много записей, что часто заставит хранить их в разных местах. Лишние движения головок при поиске этих данных, в таком случае, приведут к сильному замедлению процесса поиска данных о местоположении файла.
FAT32, из-за большой области самой таблицы размещения будет испытывать огромные трудности, если фрагменты файла разбросаны по всему диску. Дело в том, что FAT (File Allocation Table, таблица размещения файлов) представляет собой мини-образ диска, куда включен каждый его кластер. Для доступа к фрагменту файла в системе FAT16 и FAT32 приходится обращаться к соответствующей частичке FAT. Если файл, к примеру, расположен в трех фрагментах - в начале диска, в середине, и в конце - то в системе FAT нам придется обратиться к фрагменту FAT также в его начале, в середине и в конце. В системе FAT16, где максимальный размер области FAT составляет 128 Кбайт, это не составит проблемы - вся область FAT просто хранится в памяти, или же считывается с диска целиком за один проход и буферизируется. FAT32 же, напротив, имеет типичный размер области FAT порядка сотен килобайт, а на больших дисках - даже несколько мегабайт. Если файл расположен в разных частях диска - это вынуждает систему совершать движения головок винчестера столько раз, сколько групп фрагментов в разных областях имеет файл, а это очень и очень сильно замедляет процесс поиска фрагментов файла.
Вывод: Абсолютный лидер - FAT16, он никогда не заставит систему делать лишние дисковые операции для данной цели. Затем идет NTFS - эта система также не требует чтения лишней информации, по крайней мере, до того момента, пока файл имеет разумное число фрагментов. FAT32 испытывает огромные трудности, вплоть до чтения лишних сотен килобайт из области FAT, если файл разбросан разным областям диска. Работа с внушительными по размеру файлами на FAT32 в любом случае сопряжена с огромными трудностями - понять, в каком месте на диске расположен тот или иной фрагмент файла, можно лишь изучив всю последовательность кластеров файла с самого начала, обрабатывая за один раз один кластер (через каждые 4 Кбайт файла в типичной системе). Стоит отметить, что если файл фрагментирован, но лежит компактной кучей фрагментов - FAT32 всё же не испытывает больших трудностей, так как физический доступ к области FAT будет также компактен и буферизован.
Поиск свободного места
Данная операция производится в том случае, если файл нужно создать с нуля или скопировать на диск. Поиск места под физические данные файла зависит от того, как хранится информация о занятых участках диска.
На что влияет этот параметр: на скорость создания файлов, особенно больших. Сохранение или создание в реальном времени больших мультимедийных файлов (.wav, к примеру), копирование больших объемов информации, т.д. Этот параметр показывает, насколько быстро система сможет найти место для записи на диск новых данных, и какие операции ей придется для этого проделать.
Для определения того, свободен ли данный кластер или нет, системы на основе FAT должны просмотреть одну запись FAT, соответствующую этому кластеру. Размер одной записи FAT16 составляет 16 бит, одной записи FAT32 - 32 бита. Для поиска свободного места на диске может потребоваться просмотреть почти всего FAT - это 128 Кбайт (максимум) для FAT16 и до нескольких мегабайт (!) - в FAT32. Для того, чтобы не превращать поиск свободного места в катастрофу (для FAT32), операционной системе приходится идти на различные ухищрения.
NTFS имеет битовую карту свободного места, одному кластеру соответствует 1 бит. Для поиска свободного места на диске приходится оценивать объемы в десятки раз меньшие, чем в системах FAT и FAT32.
Вывод: NTFS имеет наиболее эффективную систему нахождения свободного места. Стоит отметить, что действовать "в лоб" на FAT16 или FAT32 очень медленно, поэтому для нахождения свободного места в этих системах применяются различные методы оптимизации, в результате чего и там достигается приемлемая скорость. (Одно можно сказать наверняка - поиск свободного места при работе в DOS на FAT32 - катастрофический по скорости процесс, поскольку никакая оптимизация невозможна без поддержки хоть сколь серьезной операционной системы).
Работа с каталогами и файлами
Каждая файловая система выполняет элементарные операции с файлами - доступ, удаление, создание, перемещение и т.д. Скорость работы этих операций зависит от принципов организации хранения данных об отдельных файлах и от устройства структур каталогов.
На что влияет этот параметр: на скорость осуществления любых операций с файлом, в том числе - на скорость любой операции доступа к файлу, особенно - в каталогах с большим числом файлов (тысячи).
FAT16 и FAT32 имеют очень компактные каталоги, размер каждой записи которых предельно мал. Более того, из-за сложившейся исторически системы хранения длинных имен файлов (более 11 символов), в каталогах систем FAT используется не очень эффективная и на первый взгляд неудачная, но зато очень экономная структура хранения этих самих длинных имен файлов. Работа с каталогами FAT производится достаточно быстро, так как в подавляющем числе случаев каталог (файл данных каталога) не фрагментирован и находится на диске в одном месте.
Единственная проблема, которая может существенно понизить скорость работы каталогов FAT - большое количество файлов в одном каталоге (порядка тысячи или более). Система хранения данных - линейный массив - не позволяет организовать эффективный поиск файлов в таком каталоге, и для нахождения данного файла приходится перебирать большой объем данных (в среднем - половину файла каталога).
NTFS использует гораздо более эффективный способ адресации - бинарное дерево, о принципе работы которого можно прочесть в другой статье (Файловая система NTFS). Эта организация позволяет эффективно работать с каталогами любого размера - каталогам NTFS не страшно увеличение количества файлов в одном каталоге и до десятков тысяч.
Стоит заметить, однако, что сам каталог NTFS представляет собой гораздо менее компактную структуру, нежели каталог FAT - это связано с гораздо большим (в несколько раз) размером одной записи каталога. Данное обстоятельство приводит к тому, что каталоги на томе NTFS в подавляющем числе случаев сильно фрагментированы. Размер типичного каталога на FAT-е укладывается в один кластер, тогда как сотня файлов (и даже меньше) в каталоге на NTFS уже приводит к размеру файла каталога, превышающему типичный размер одного кластера. Это, в свою очередь, почти гарантирует фрагментацию файла каталога, что, к сожалению, довольно часто сводит на нет все преимущества гораздо более эффективной организации самих данных.
Вывод: структура каталогов на NTFS теоретически гораздо эффективнее, но при размере каталога в несколько сотен файлов это практически не имеет значения. Фрагментация каталогов NTFS, однако, уверенно наступает уже при таком размере каталога. Для малых и средних каталогов NTFS, как это не печально, имеет на практике меньшее быстродействие.
Преимущества каталогов NTFS становятся реальными и неоспоримыми только в том случае, если в одно каталоге присутствуют тысячи файлов - в этом случае быстродействие компенсирует фрагментированность самого каталога и трудности с физическим обращением к данным (в первый раз - далее каталог кэшируется). Напряженная работа с каталогами, содержащими порядка тысячи и более файлов, проходит на NTFS буквально в несколько раз быстрее, а иногда выигрыш в скорости по сравнению с FAT и FAT32 достигает десятков раз.
Практика
К сожалению, как это часто бывает во всевозможных компьютерных вопросах, практика не очень хорошо согласуется с теорией. NTFS, имеющая, казалось бы, очевидные преимущества в структуре, показывает не настолько уж фантастические результаты, как можно было бы ожидать. Какие еще соображения влияют на быстродействие файловой системы? Каждый из рассматриваемых далее вопросов вносит свой вклад в итоговое быстродействие. Помните, однако, что реальное быстродействие - результат действия сразу всех факторов, поэтому и в этой части статьи не стоит делать поспешных выводов.
Объем оперативной памяти (кэширование)
Очень многие данные современных файловых систем кэшируются или буферизируются в памяти компьютера, что позволяет избежать лишних операций физического чтения данных с диска. Для нормальной (высокопроизводительной) работы системы в кэше приходится хранить следующие типы информации:
Данные о физическом местоположении всех открытых файлов. Это, прежде всего, позволит обращаться к системным файлам и библиотекам, доступ к которым идет буквально постоянно, без чтения служебной (не относящейся к самим файлам) информации с диска. Это же относится к тем файлам, которые исполняются в данный момент - т.е. к выполняемым модулям (.exe и .dll) активных процессов в системе. В эту категорию попадают также файлы системы, с которыми производится работа (прежде всего реестр и виртуальная память, различные .ini файлы, а также файлы документов и приложений).
Наиболее часто используемые каталоги. К таковым можно отнести рабочий стол, меню "пуск", системные каталоги, каталоги кэша интернета, и т.п.
Данные о свободном месте диска - т.е. та информация, которая позволит найти место для сохранения на диск новых данных.
В случае, если этот базовый объем информации не будет доступен прямо в оперативной памяти, системе придется совершать множество ненужных операций еще до того, как она начнет работу с реальными данными. Что входит в эти объемы в разных файловых системах? Или, вопрос в более практической плоскости - каким объемом свободной оперативной памяти надо располагать, чтобы эффективно работать с той или иной файловой системой?
FAT16 имеет очень мало данных, отвечающих за организацию файловой системы. Из служебных областей можно выделить только саму область FAT, которая не может превышать 128 Кбайт (!) - эта область отвечает и за поиск фрагментов файлов, и за поиск свободного места на томе. Каталоги системы FAT также очень компактны. Общий объем памяти, необходимый для предельно эффективной работы с FAT-ом, может колебаться от сотни килобайт и до мегабайта-другого - при условии огромного числа и размера каталогов, с которыми ведется работа.
FAT32 отличается от FAT16 лишь тем, что сама область FAT может иметь более внушительные размеры. На томах порядка 5 - 10 Гбайт область FAT может занимать объем в несколько Мбайт, и это уже очень внушительный объем, надежно кэшировать который не представляется возможным. Тем не менее, область FAT, а вернее те фрагменты, которые отвечают за местоположение рабочих файлов, в подавляющем большинстве систем находятся в памяти машины - на это расходуется порядка нескольких Мбайт оперативной памяти.
NTFS, к сожалению, имеет гораздо большие требования к памяти, необходимой для работы системы. Прежде всего, кэширование сильно затрудняет большие размеры каталогов. Размер одних только каталогов, с которыми активно ведет работу система, может запросто доходить до нескольких Мбайт и даже десятков Мбайт! Добавьте к этому необходимость кэшировать карту свободного места тома (сотни Кбайт) и записи MFT для файлов, с которыми осуществляется работа (в типичной системе - по 1 Кбайт на каждый файл). К счастью, NTFS имеет удачную систему хранения данных, которая не приводит к увеличению каких-либо фиксированных областей при увеличении объема диска. Количество данных, с которым оперирует система на основе NTFS, практически не зависит от объема тома, и основной вклад в объемы данных, которые необходимо кэшировать, вносят каталоги. Тем не менее, уже этого вполне достаточно для того, чтобы только минимальный объем данных, необходимых для кэширования базовых областей NTFS, доходил до 5 - 8 Мбайт.
[pagebreak]
К сожалению, можно с уверенностью сказать: NTFS теряет огромное количество своего теоретического быстродействия из-за недостаточного кэширования. На системах, имеющих менее 64 Мбайт памяти, NTFS просто не может оказаться быстрее FAT16 или FAT32. Единственное исключение из этого правила - диски FAT32, имеющие объем десятки Гбайт (я бы лично серьезно опасался дисков FAT32 объемом свыше, скажем, 30 Гбайт). В остальных же случаях - системы с менее чем 64 мегабайтами памяти просто обязаны работать с FAT32 быстрее.
Типичный в настоящее время объем памяти в 64 Мбайта, к сожалению, также не дает возможности организовать эффективную работу с NTFS. На малых и средних дисках (до 10 Гбайт) в типичных системах FAT32 будет работать, пожалуй, немного быстрее. Единственное, что можно сказать по поводу быстродействия систем с таким объемом оперативной памяти - системы, работающие с FAT32, будут гораздо сильнее страдать от фрагментации, чем системы на NTFS. Но если хотя бы изредка дефрагментировать диски, то FAT32, с точки зрения быстродействия, является предпочтительным вариантом. Многие люди, тем не менее, выбирают в таких системах NTFS - просто из-за того, что это даст некоторые довольно важные преимущества, тогда как типичная потеря быстродействия не очень велика.
Системы с более чем 64 Мбайтами, а особенно - со 128 Мбайт и более памяти, смогут уверенно кэшировать абсолютно всё, что необходимо для работы систем, и вот на таких компьютерах NTFS, скорее всего, покажет более высокое быстродействие из-за более продуманной организации данных. В наше время этим показателям соответствует практически любой компьютер.
Быстродействие накопителя
Влияют ли физические параметры жесткого диска на быстродействие файловой системы? Да, хоть и не сильно, но влияют. Можно выделить следующие параметры физической дисковой системы, которые по-разному влияют на разные типы файловых систем:
Время случайного доступа (random seek time). К сожалению, для доступа к системным областям на типичном диске более сложной файловой системы (NTFS) приходится совершать, в среднем, больше движений головками диска, чем в более простых системах (FAT16 и FAT32). Гораздо большая фрагментация каталогов, возможность фрагментации системных областей - всё это делает диски NTFS гораздо более чувствительными к скорости считывания произвольных (случайных) областей диска. По этой причине использовать NTFS на медленных (старых) дисках не рекомендуется, так как высокое (худшее) время поиска дорожки дает еще один плюс в пользу систем FAT.
Наличие Bus Mastering. Bus Mastering - специальный режим работы драйвера и контроллера, при использовании которого обмен с диском производится без участия процессора. Стоит отметить, что система запаздывающего кэширования NTFS сможет действовать гораздо более эффективно при наличии Bus Mastering, т.к. NTFS производит отложенную запись гораздо большего числа данных. Системы без Bus Mastering в настоящее время встречаются достаточно редко (обычно это накопители или контроллеры, работающие в режиме PIO3 или PIO4), и если вы работаете с таким диском - то, скорее всего, NTFS потеряет еще пару очков быстродействия, особенно при операциях модификации каталогов (например, активная работа в интернете - работа с кэшем интернета).
Кэширование как чтения, так и записи на уровне жестких дисков (объем буфера HDD - от 128 Кбайт до 1-2 Мбайт в современных дорогих дисках) - фактор, который будет более полезен системам на основе FAT. NTFS из соображений надежности хранения информации осуществляет модификацию системных областей с флагом "не кэшировать запись", поэтому быстродействие системы NTFS слабо зависит от возможности кэширования самого HDD. Системы FAT, напротив, получат некоторый плюс от кэширования записи на физическом уровне. Стоит отметить, что, вообще говоря, всерьез принимать в расчет размер буфера HDD при оценке быстродействия тех или иных файловых систем не стоит.
Подводя краткий итог влиянию быстродействия диска и контроллера на быстродействия системы в целом, можно сказать так: NTFS страдает от медленных дисков гораздо сильнее, чем FAT.
Размер кластера
Хотелось бы сказать пару слов о размере кластера - тот параметр, который в файловых системах FAT32 и NTFS можно задавать при форматировании практически произвольно. Прежде всего, надо сказать, что больший размер кластера - это практически всегда большее быстродействие. Размер кластера на томе NTFS, однако, имеет меньшее влияние на быстродействие, чем размер кластера для системы FAT32.
Типичный размер кластера для NTFS - 4 Кбайта. Стоит отметить, что при большем размере кластера отключается встроенная в файловую систему возможность сжатия индивидуальных файлов, а также перестает работать стандартный API дефрагментации - т.е. подавляющее число дефрагментаторов, в том числе встроенный в Windows 2000, будут неспособны дефрагментировать этот диск. SpeedDisk, впрочем, сможет - он работает без использования данного API. Оптимальным с точки зрения быстродействия, по крайней мере, для средних и больших файлов, считается (самой Microsoft) размер 16 Кбайт. Увеличивать размер далее неразумно из-за слишком больших расходов на неэффективность хранения данных и из-за мизерного дальнейшего увеличения быстродействия. Если вы хотите повысить быстродействие NTFS ценой потери возможности сжатия - задумайтесь о форматировании диска с размером кластера, большим чем 4 Кбайта. Но имейте в виду, что это даст довольно скромный прирост быстродействия, который часто не стоит даже уменьшения эффективности размещения файлов на диске.
Быстродействие системы FAT32, напротив, можно довольно существенно повысить, увеличив размер кластера. Если в NTFS размер кластера почти не влияет на размер и характер данных системных областей, то в системе FAT увеличивая кластер в два раза, мы сокращаем область FAT в те же два раза. Вспомните, что в типичной системе FAT32 эта очень важная для быстродействия область занимает несколько Мбайт. Сокращение области FAT в несколько раз даст заметное увеличение быстродействия, так как объем системных данных файловой системы сильно сократиться - уменьшается и время, затрачиваемое на чтение данных о расположении файлов, и объем оперативной памяти, необходимый для буферизирования этой информации. Типичный объем кластера для систем FAT32 составляет тоже 4 Кбайт, и увеличение его до 8 или даже до 16 Кбайт - особенно для больших (десяток и более гигабайт) дисков - достаточно разумный шаг.
Другие соображения
NTFS является достаточно сложной системой, поэтому, в отличие от FAT16 и FAT32, имеются и другие факторы, которые могут привести к существенному замедлению работы NTFS:
Диск NTFS был получен преобразованием раздела FAT16 или FAT32 (команда convert). Данная процедура в большинстве случаев представляет собой тяжелый случай для быстродействия, так как структура служебных областей NTFS, скорее всего, получится очень фрагментированной. Если есть возможность - избегайте преобразования других систем в NTFS, так как это приведет к созданию очень неудачного диска, которому не поможет даже типичный (неспециализированный) дефрагментатор, типа Diskeeper-а или встроенного в Windows 2000.
Активная работа с диском, заполненным более чем на 80% - 90%, представляет собой катастрофический для быстродействия NTFS случай, так как фрагментация файлов и, самое главное, служебных областей, будет расти фантастически быстро. Если ваш диск используется в таком режиме - FAT32 будет более удачным выбором при любых других условиях.
Выводы
В данной заключительной части "одной строчкой" собраны ключевые особенности быстродействия этих трех файловых систем.
FAT - плюсы:
Для эффективной работы требуется немного оперативной памяти.
Быстрая работа с малыми и средними каталогами.
Диск совершает в среднем меньшее количество движений головок (в сравнении с NTFS).
Эффективная работа на медленных дисках.
FAT - минусы:
Катастрофическая потеря быстродействия с увеличением фрагментации, особенно для больших дисков (только FAT32).
Сложности с произвольным доступом к большим (скажем, 10% и более от размера диска) файлам.
Очень медленная работа с каталогами, содержащими большое количество файлов.
NTFS - плюсы:
Фрагментация файлов не имеет практически никаких последствий для самой файловой системы - работа фрагментированной системы ухудшается только с точки зрения доступа к самим данным файлов.
Сложность структуры каталогов и число файлов в одном каталоге также не чинит особых препятствий быстродействию.
Быстрый доступ к произвольному фрагменту файла (например, редактирование больших .wav файлов).
Очень быстрый доступ к маленьким файлам (несколько сотен байт) - весь файл находится в том же месте, где и системные данные (запись MFT).
NTFS - минусы:
Существенные требования к памяти системы (64 Мбайт - абсолютный минимум, лучше - больше).
Медленные диски и контроллеры без Bus Mastering сильно снижают быстродействие NTFS.
Работа с каталогами средних размеров затруднена тем, что они почти всегда фрагментированы.
Диск, долго работающий в заполненном на 80% - 90% состоянии, будет показывать крайне низкое быстродействие.
Хотелось бы еще раз подчеркнуть, что на практике основной фактор, от которого зависит быстродействие файловой системы - это, как ни странно, объем памяти машины. Системы с памятью 64-96 Мбайт - некий рубеж, на котором быстродействие NTFS и FAT32 примерно эквивалентно. Обратите внимание также на сложность организации данных на вашей машине. Если вы не используете ничего, кроме простейших приложений и самой операционной системы - может случиться так, что FAT32 сможет показать более высокое быстродействие и на машинах с большим количеством памяти.
NTFS - система, которая закладывалась на будущее, и это будущее для большинства реальных применений сегодняшнего дня еще, к сожалению, видимо не наступило. На данный момент NTFS обеспечивает стабильное и равнодушное к целому ряду факторов, но, пожалуй, всё же невысокое - на типичной "игровой" домашней системе - быстродействие. Основное преимущество NTFS с точки зрения быстродействия заключается в том, что этой системе безразличны такие параметры, как сложность каталогов (число файлов в одном каталоге), размер диска, фрагментация и т.д. В системах FAT же, напротив, каждый из этих факторов приведет к существенному снижению скорости работы.
Только в сложных высокопроизводительных системах - например, на графических станциях или просто на серьезных офисных компьютерах с тысячами документов, или, тем более, на файл-серверах - преимущества структуры NTFS смогут дать реальный выигрыш быстродействия, который порой заметен невооруженным глазом. Пользователям, не имеющим большие диски, забитые информацией, и не пользующимся сложными программами, не стоит ждать от NTFS чудес скорости - с точки зрения быстродействия на простых домашних системах гораздо лучше покажет себя FAT32.
Жесткие диски (винчестеры), как электромеханические устройства, являются одним из самых ненадежных компонентов современного компьютера. Несмотря на то, что в большинстве случаев срок службы последних соизмерим, и даже превосходит время их эксплуатации до момента морального устаревания и замены более новыми моделями, все же отдельные экземпляры выходят из строя в течение первых месяцев эксплуатации. Выход жесткого диска из строя - самое худшее, что может случиться с вашим компьютером, так как при этом часто необратимо теряются накопленные на нем данные. Если резервная копия по какой-то причине отсутствует, то суммарный ущерб от поломки заметно превышает номинальную стоимость современных винчестеров.
Многие фирмы, пользуясь ситуацией, предлагают свои услуги по восстановлению информации с вышедшего из строя накопителя. Очевидно, это обходится недешево и целесообразно только тогда, когда на диске находилось что-то действительно ценное. В противном случае легче просто смириться с потерей.
Ремонт жестких дисков требует специального оборудования и практически невозможен в домашних условиях. Так, например, для вскрытия контейнера необходима особо чистая от пыли комната. Казалось бы, положение безнадежно и нечего даже помышлять о восстановлении поломанного диска в домашних условиях. Но, к счастью, не все поломки настолько серьезны, и во многих случаях можно обойтись для ремонта подручными (а иногда чисто программными) средствами.
Один из самых частых отказов винчестеров фирмы western digital (а также и некоторых других) выглядит следующим образом: жесткий диск не опознается bios, а головки при этом отчетливо стучат. Скорее всего, по какой-то причине не работает блок термокалибровки, и устройство не может обеспечить нужный зазор между головкой и рабочей поверхностью "блина". Обычно это происходит при отклонении от нормального температурного режима эксплуатации, например, в зимнее время, когда жесткие диски в плохо отапливаемых помещениях "выстывают" за ночь (при температуре 18...210С жесткий диск часто может исправно функционировать и с испорченным механизмом термокалибровки). Попробуйте дать поработать винчестеру в течение нескольких часов, чтобы он прогрелся, при этом рано или поздно винчестер попадает в необходимый диапазон температур и работоспособность (возможно, временно) восстанавливается. Разумеется, первым делом нужно скопировать всю информацию, поскольку работоспособность такого диска уже не гарантируется. То же можно рекомендовать и в отношении устаревших моделей без термокалибровки; часто они оказываются зависимыми от температурного режима, и с ростом износа винчестера эта зависимость проявляется все сильнее.
Вторым по распространенности отказом является выход из строя модуля диагностики при полной исправности остальных компонентов. Как это ни покажется парадоксальным, но полностью рабочий винчестер не проходит диагностику. При этом в регистре ошибок (порт ox1f1 для первого жесткого диска) могут содержаться значения, приведенные ниже:
Диагностические ошибки
Бит Содержимое Источник ошибки
7 0 Ошибка master диска
1 Ошибка slave диска
2-0 011 Ошибка секторного буфера
100 Ошибка контрогльной суммы, не устранимая избыточным кодированием
101 Ошибка микроконтроллера
Разные biosы могут различно реагировать на такую ситуацию, но все варианты сводятся к одному - жесткий диск не определяется и не "чувствуется". Однако на уровне портов ввода/вывода устройство функционирует отлично. Заметим, что существуют такие материнские платы (особенно среди новых моделей), которые, обнаружив ошибку микроконтроллера винчестера, просто отключают питание жесткого диска. Несложно написать для испорченного таким образом винчестера драйвер, который обеспечит работу с диском через высокоуровневый интерфейс int 0x13. Например, следующая процедура обеспечивает посекторное чтение и запись через порты ввода/вывода для первого жесткого диска в chs режиме.
lba mode для упрощения понимания не поддерживается. Необходимую техническую информацию обычно можно найти на сайте производителя вашего жесткого диска.
Этот фрагмент может служить вполне работоспособным ядром для драйвера 16-ти разрядного режима. Для упрощения понимания не включена задержка после каждого обращения к порту. В зависимости от соотношений скорости вашего процессора и контроллера диска эта задержка может и не потребоваться (в противном случае рекомендуется читать регистр статуса ox1f7, дожидаясь готовности контроллера). При этом не следует спешить с заменой такого жесткого диска на новый, с подобной неисправностью можно успешно работать не год и не два. Последнее, правда, лишь при условии, что все используемое программное обеспечение не будет конфликтовать с нестандартным драйвером. Писать драйвер, скорее всего, придется вам самому, поскольку не известно ни одной коммерческой разработки в этом направлении, а все любительские разработки выполнены в основном "под себя". Так, например, драйвер от kpnc hddfix3a поддерживает только винчестеры primary master до пятисот мегабайт и не работает в среде windows 95 (разработан на год раньше ее появления).
Более легкий, но не всегда осуществимый путь - запретить тестирование жестких дисков biosом или, по крайней мере, игнорировать результаты такового. Как это осуществить, можно прочесть в руководстве на материнскую плату (или обратиться за помощью к службе технической поддержки фирмы-производителя, поскольку в руководствах пользователя такие тонкости нередко опускают). Например, попробуйте установить "halt on" в "never" или перезаписать flach bios, модифицировав его так, чтобы тот не выполнял подобную проверку. Если Вам повезет, жесткий диск заработает! Однако иногда все же происходят и аппаратные отказы. Например, у винчестеров фирм samsung и conner отмечены случаи отказа модуля трансляции мультисекторного чтения/записи. Если это не будет обнаружено внутренним тестом устройства, то такой жесткий диск вызовет зависание операционной системы на стадии ее загрузки. Для предотвращения этого достаточно добавить в config.sys ключ multi-track=off и отключить аналогичные опции в blose. При этом, проиграв в скорости, все же можно заставить жесткий диск сносно работать. Понятно, что эксплуатировать восстановленный таким образом диск длительное время нерационально по причине потери быстродействия. Лучше приобрести новый, на который и скопировать всю информацию. С другой стороны, такой жесткий диск все же остается полностью рабочим и успешно может служить, например, в качестве резервного.
На том же connere эпизодически выходит из строя блок управления позиционированием головок, так что последние уже не могут удержаться на дорожке и при обращении к следующему сектору немного "уползают". При этом считывание на выходе дает ошибочную информацию, а запись необратимо затирает соседние сектора. Бороться с этим можно позиционированием головки перед каждой операцией записи/чтения, обрабатывая за один проход не более сектора. Понятно, что для этого необходимо вновь садиться за написание собственного драйвера. К счастью, он достаточно простой (можно использовать аппаратное прерывание от жесткого диска int 0x76 irq14, вставив в тело обработчика команду сброса контроллера. В данном случае подразумевается, что контроллер используемого жесткого диска проводит рекалибровку головки во время операции сброса. Некоторые модели этого не делают. В этом случае придется прибегнуть к операции позиционирования головки (функция ОхС дискового сервиса 0x13). Первые модели от вторых можно отличить временем, требуемым на сброс контроллера. Понятно, что электроника "сбрасывается" мгновенно, а позиционирование головки требует хоть и не большого, но все же заметного времени. Современные модели с поддержкой кэширования этого часто не делают или "откладывают" операции с головкой до первого к ней обращения. Разумеется, в этом случае кэширование придется выключить. Большинство bios позволяет это делать без труда, и нет нужды программировать контроллер самостоятельно. В другом случае вышедший из строя блок позиционирования (трансляции) подводит головки вовсе не к тому сектору, который запрашивался. Например, головки могли физически сместиться с оси, "уползая" в сторону. Разумеется, этот дефект можно скорректировать программно, достаточно проанализировать ситуацию и логику искажения трансляции. Многие модели позиционируют головку, используя разметку диска, что страхует от подобных поломок (к сожалению, сейчас от такого подхода большинство фирм отказались, выигрывая в скорости).
Конечно, все описанные программные подходы в действительности не устраняют неисправность, а только позволяют скопировать с казалось бы уже нерабочего винчестера ценные и еще не сохраненные данные. При этом ни к чему писать универсальный драйвер для win32 и защищенного режима. Вполне можно ограничиться dos-режимом. Для копирования файлов последнего должно оказаться вполне достаточно, конечно за исключением тех случаев, когда диск был отформатирован под ntsf или другую, не поддерживаемую ms-dos, систему. К счастью, для многих из них есть драйверы, которые позволяют "видеть" подобные разделы даже из "голой" ms-dos. В крайнем случае, можно ограничиться посекторным копированием на винчестер точно такой же топологии. При этом совершенно не имеет значения используемая файловая система и установленная операционная система.
Посекторно скопировать диск на винчестер с иной топологией трудно, но возможно. Дело в том, что многие современные контроллеры жестких дисков позволяют пользователю менять трансляцию произвольным образом. Для этого необходимо приобрести винчестер, поддерживающий lba-режим (а какой из современных жестких дисков его не поддерживает?). При этом он может быть даже большего объема, нежели исходный, но это никак не помешает копированию. Другой вопрос, что без переразбиения скопированный таким образом диск не "почувствует" дополнительных дорожек и следует запустить norton disk doctor, который устранит эту проблему.
Достаточно часто нарушается вычисление зон предком-пенсации. Дело в том, что плотность записи на разных цилиндрах не одинакова, так как линейная скорость растет от центра диска к периферии. Разумеется, гораздо легче постепенно уплотнять записи, нежели искать некий усредненный компромисс. На всех существующих моделях плотность записи изменяется скачкообразно и на последних моделях программно доступна через соответствующие регистры контроллера. При этом значения, выставленные в bios, практически любой жесткий диск (с интерфейсом ide) просто игнорирует. Предыдущие модели не имели с этим проблем, и только винчестеры, выпущенные в течение последних двух лет, склонны к подобным поломкам. Скорее, даже не к поломкам, а к сбоям, в результате которых искажается хранимая где-то в недрах жесткого диска информация. Если контроллер позволяет ее программно корректировать, то считайте, что ваш жесткий диск спасен. Конечно, придется пройти сквозь мучительные попытки угадать оригинальные значения, однако это можно делать и автоматическим перебором до тех пор, пока винчестер не начнет без ошибок читать очередную зону. Помните, что любая запись на диск способна нарушить низкоуровневую разметку винчестера, после чего последний восстановлению не подлежит и его останется только выкинуть. Производите только чтение секторов!
Если же контроллер не позволяет программно управлять предкомпенсацией, то еще не все потеряно. Попробуйте перед каждым обращением делать сброс контроллера, а точнее, его рекалибровку (команда ixh). В некоторых случаях это срабатывает, поскольку с целью оптимизации скорости обмена предкомпенсацией обычно управляет не один блок. И, кроме того, иногда контроллер кэша не учитывает предкомпенсацию, а его сброс реализует последнюю аппаратно. К сожалению, это по большей части догадки и результаты экспериментов автора, так как техническая документация фирм-производителей по этому поводу не отличается полнотой, а местами содержит противоречия. Можно испытать и другой способ - попробовать перезаписать микрокод контроллера (команда 92h). Конечно, это доступно только для специалистов очень высокого класса, но ведь доступно! Заметим, что не все контроллеры поддерживают такую операцию. С другой стороны, это и хорошо, так как уменьшает вероятность сбоя и не дает некорректно работающим программам (вирусам в том числе) испортить дорогое устройство. Жесткие диски от samsung обладают еще одной неприятной особенностью - часто при подключении шлейфа "на лету", при включенном питании, они перестают работать. Внешне это выглядит так: индикатор обращения к диску постоянно горит, но диск даже не определяется biosom, или определяется, но все равно не работает. Близкое рассмотрение показывает, что на шине пропадает сигнал готовности устройства. В остальном контроллер остается неповрежденным. Разумеется, если не обращать внимание на отсутствие сигнала готовности, то с устройством можно общаться, делая вручную необходимые задержки (поскольку физическую готовность устройства уже узнать не представляется возможным, приходится делать задержки с изрядным запасом времени). При этом, к сожалению, придется отказаться от dma-mode (а уж тем более ultra-dma) и ограничиться pio 1 (с небольшим риском - pio 2) режимом. Конечно, писать соответствующий драйвер вам придется опять самостоятельно. Разумеется, скорость обмена в режиме pio 1 по сегодняшним меркам совершенно неудовлетворительна и не годится ни для чего другого, кроме как копирования информации со старого на новый винчестер, но некоторые "нечистоплотные" продавцы компьютерной техники как-то ухитряются устанавливать подобные экземпляры на продаваемые машины. Будьте осторожны! Учитывая, что написание подобных драйверов для win32 - трудоемкое занятие, большинство ограничивается поддержкой одной лишь ms-dos, и вовсе не факт, что компьютер, демонстрирующий загрузку win95, содержит исправный, а не реанимированный подобным образом жесткий диск.
У жестких дисков фирмы samsung при подключении "налету" может появляться другой неприятный дефект - при запросах на чтение контроллер периодически "повисает" и не завершает операцию. В результате "замирает" вся операционная система (впрочем, windows nt с этим справляется, но, вероятно, не всегда). На первый взгляд может показаться, что с этого винчестера несложно скопировать ценные файлы, но при попытке выполнить это выясняется, что диск "зависает" все чаще и чаще и копирование растягивается до бесконечности. Однако если выполнить сброс контроллера, то можно будет повторить операцию. Это можно сделать аппарат -но, подпаяв одну кнопку на линию сброса и статуса. Последнее нужно для указания на ошибочную ситуацию, чтобы операционная система повторила незавершенную операцию. Если этого не сделать, то часть секторов не будет реально прочитана (записана). Или можно выполнять сброс автоматически, например, по таймеру. Чтобы не сталкиваться с подобной ситуацией, никогда не следует подсоединять/отсоединять винчестер при включенном питании. Очень часто это приводит к подобным ошибкам, хотя производители других фирм, по-видимому, как-то от этого все же защищаются, ибо аналогичной ситуации у них практически не встречается. Все же не стоит искушать судьбу... От аппаратных ошибок теперь перейдем к дефектам поверхности. Заметим сразу, что последнее встречается гораздо чаще и проявляется намного коварнее. Обычно это ситуация, в которой мало что можно предпринять. Но достичь главной цели - спасти как можно больше уцелевших данных - довольно часто удается. Возьмем такую типичную ситуацию как ошибка чтения сектора. Маловероятно, чтобы сектор был разрушен целиком. Чаще всего "сыплется" только какая-то его часть, а все остальные данные остаются неискаженными. Существуют контроллеры двух типов. Первые, обнаружив расхождение контрольной суммы считанного сектора, все же оставляют прочитанные данные в буфере и позволяют их извлечь оттуда, проигнорировав ошибку чтения. Вторые либо очищают буфер, либо просто не сбрасывают внутренний кэш, в результате чего все равно прочитать буфер невозможно. На практике обычно встречаются последние. При этом сброс кэша можно инициировать серией запросов без считывания полученных данных. Кэш при этом переполняется, и наиболее старые данные будут вытолкнуты в буфер. Остается их только прочесть. Конечно,-это крайне медленно, но, к сожалению, универсальной команды сброса кэша не существует. Разные разработчики реализуют это по-своему (впрочем, иногда это можно найти в документации на чипы, используемые в контроллере). western digital сообщает в техническом руководстве что при длинном чтении сектора без повтора контроль сектора не выполняется и он будет-таки целиком помещен в буфер. Кстати, так и должно быть по стандарту. Увы, остальные фирмы от него часто отклоняются по разным соображениям. Остается определить, какие же из прочитанных данных достоверные, а какие нет (если этого не видно "визуально" - например, в случае текстового или графического файлов)? Разумеется, в подобных рамках задача кажется неразрешимой, но это не совсем так. Дело в том, что можно произвести не только короткое, но и длинное чтение (ox22h req ploin long with retry), для чего можно использовать следующую процедуру. При этом кроме собственно данных читаются также и корректирующие коды. Автоматическая коррекция не выполняется (хотя некоторые контроллеры это реализуют аппаратно и не могут отключить автокоррекцию; в документации этот момент, кстати, не уточняется). Как правило, используются корректирующие коды Рида-Соломона, хотя последнее не обязательно. Математические законы позволяют не только определить место возникновения сбоя, но и даже восстановить несколько бит. При больших разрушениях можно определить только место сбоя, но достоверно восстановить информацию не удается.
Модуляция при записи такова, что все биты, стоящие справа от сбойного, уже не достоверны. Точнее, не все, а только в пределах одного пакета. Обычно за один раз записывается от 3 до 9 бит (необходимо уточнить у конкретного производителя) и содержимое остальных пакетов, как правило, остается достоверным. Самое интересное, что зачастую сбойный пакет можно восстановить методом перебора! При этом можно даже рассчитать, сколько вариантов должно получиться. Учитывая хорошую степень "рассеяния" корректирующих кодов можно сказать, что не очень много. И таким образом можно восстановить казалось бы безнадежно испорченные сектора, а вместе с ними и файлы, расположенные "поверх" последних.
Выше были перечислены наиболее типичные случаи отказов жестких дисков, которые поддавались чисто программному восстановлению если уж не винчестера, то хотя бы хранимых на нем данных. Разумеется, что иногда жесткий диск выходит из строя полностью (например, при неправильно подключенном питании, скачках напряжения) от вибрации или ударов, а то и просто из-за откровенного заводского брака. Есть один старый проверенный способ - найти жесткий диск такой же точно модели и заменить электронную плату. К сожалению, последнее из-за ряда конструктивных особенностей все реже и реже бывает возможно, а уж дефекты поверхности этот способ и вовсе бессилен вылечить. Поэтому, берегите свой жесткий диск и почаще проводите резервное копирование. Помните, что самое дорогое это не компьютер, а хранимая на нем информация!
Эта статья является продолжением статьи о создании счетчика просмотров для каждой страницы сайта на php и MySQL (если Вы ее не читали, то обязательно прочтите, иначе ничего не поймете из ниже сказанного). В этой статья я решил продолжить тему и расширить возможности счетчика просмотров страниц.
Для увеличения возможностей и получения статистики просмотров страниц сайта к базовому php скрипту необходимо добавить несколько строк и своих функций. В частности нужно будет создать еще одну таблицу, которая имеет следующую структуру:
Как видно из структуры MySQL таблицы, она состоит всего из двух полей (page_id – хэш сумма md5() от urla страницы и page_url – url страницы) и индекса, установленного на поле page_id – для значительного ускорения поиска значения в таблице. И еще, я не стал изменять изначальную таблицу my_log, которая использовалась для подсчета количества просмотров страниц, а создал другую по одной простой, но очень весомой причине: чем больше данных в таблице – тем медленнее осуществляется поиск по таблице. А скорость работы php скриптов такого уровня не должна ощутимо влиять на работу сайта в целом. Ведь если у вас коммерческий и при этом очень посещаемый сайт, то тратить строго ограниченное процессорное время на второстепенные задачи просто невыгодно, ведь зачастую прибыль зависит от того, сколько человек сможет увидеть ваш сайт.
Теперь перейдем непосредственно к коду php скрипта. Я внес в него незначительные изменения, в основном это новые функции для работы с MySQL таблицей my_log_urls.
В counter.php внес следующие изменения:
добавляем функцию Default_Write_URL
В результате, получаем значительную экономию времени т.к. делаем всего одну запись в таблицу my_log_urls и одну в my_log, и при следующих запросах этой же страницы запрос к таблице my_log_urls выполняться не будет, т.к. запись уже существует в таблице my_log, следовательно и в таблице my_log_urls она то же есть.
Для подсчета рейтинга страниц сайта, предлагаю написать другой php скрипт, который будет по значениям просмотров страницы в таблице my_log брать значения в таблице my_log_urls. А результат представлять в виде таблицы с данными о просмотрах страниц, отсортированными по убыванию (от большего значения к меньшему).
Ниже приведен код php скрипта, который необходимо скопировать в созданный вами файл top.php:
Данный php скрипт выводит 10 самых популярных страниц вашего сайта за последние сутки и за все время. В принципе, можно осуществлять вывод и большего числа страниц, изменив в php функциях MySQLReadAll и MySQLReadToday лимит считываемых из таблицы записей. А так же можно вместо самых популярных страниц увидеть самые непопулярные, изменив способ сортировки в этих же функциях с DESC на ASC.
Скачать данный php скрипт, вместе с модифицированным php скриптом подсчета просмотров страниц, можно по этой ссылке.
Когда вы вызываете функцию Windows, она проверяет переданные ей параметры, а затем пытается выполнить работу. Если передан недопустимый параметр или если данную операцию нельзя выполнить по другой причине, она возвращает значение, свидетельствующее об ошибке. За каждой ошибкой закреплен свой 32 битный код. Функция Windows, обнаружив ошибку, через механизм локальной памяти потока сопоставляет соответствующий код ошибки с вызывающим потоком. Это позволяет потокам работать независимо друг от друга, не вмешиваясь в чужие ошибки.
Когда функция вернет вам управление, ее возвратное значение будет указывать на то, что произошла какая-то ошибка. Какая именно - вы узнаете, вызвав функцию GetLastError(). Она просто возвращает 32-битный код ошибки для данного потока. Список кодов ошибок, определенных Microsoft, содержится в файле WinError.h.
Функцию GetLastError необходимо вызывать сразу же за проверяемой функцией, иначе код ошибки будет утерян.
Для отладки бывает нужно следить не за одной ошибкой , а за их постоянным изменением, для этого нет необходимости включать в код постоянные проверки и чтение GetLastError, можно в окне дебагирования Visual C++ ввести @err,hr. В окне вы увидите значение переменной ошибки.
Так как ошибки, которые возникают в программе, возникают не только в процессе отладки, но могут быть обусловлены текущим состоянием системы, на которй бежит программа, то иногда бывает полезно сообщить тип ошибки в нормальном текстовом виде.
В Windows есть специальная функция, которая "конвертирует" код ошибки в ее описание, - FormatMessage.
Для разработчика особенно важно, при создании API или SDK подобных вещей, создавать сходный механизм возврата ошибок для своих функций.
С этой целью вы просто устанавливаете код последней ошибки в потоке и возвращаете значение FALSE, INVALID_HANDLE_VALUE, NULL или что-то другое, более подходящее по ситуации. Чтобы установить код последней ошибки в потоке используйте SetLastError.
Параметр - 32-битное число. Использовать лучше подходящий код ошибки Windows, однако если такового подходящего не нашлось, то можно ввести свой собственный код ошибки. Он должен представлять собой 32-битное число, разбитое по следующим правилам.
Биты
31-30 - Код тяжести - 0=успех, 1=информация, 2=предупреждение, 3=ошибка
29 - Кем определен - 0-Microsoft 1-пользователем
28 - Должен быть 0
27-16 - Определяется Microsoft. (Код подсистемы)
15-0 - Код ошибки.
Собственно Microsoft обещает, что бит 29 будет в ее ошибках всегда равен 0 поэтому, поставив там 1, вы будете в какой-то степени в безопасности от конфликтов с кодами ошибок Microsoft.
Потоки всегда создаются в контексте какого-либо процесса, и вся их жизнь проходит только в его границах. На практике это означает, что потоки исполняют код и манипулируют данными в адресном пространстве процесса. Если два или более потока выполняются внутри одного процесса, они делят одно адресное пространство.
Любой поток (thread) состоит из двух компонентов:
объекта ядра, через который ОС управляет потоком. Там же хранится статистическая информация о потоке.
Стека потока, который содержит параметры всех функций и локальные переменные, необходимые потоку для выполнения кода.
Потоки могут выполнять один и тот же код, манипулировать одними и теми же данными, а также совместно использовать описатели объектов ядра, поскольку таблица описателей создается не в отдельных потоках, а в процессах.
Потоки используют намного меньше ресурсов системы, чем процессы, поэтому все задачи, требующие параллельного выполнения нескольких подзадач, стоит решать по возможности с помощью потоков, не прибегая к созданию нескольких процессов.
Обычная структура многопоточного приложения рассчитана на одновременное исполнение нескольких подзадач. Однако стоит помнить, что, создавая многопоточное приложение, нам придется заботиться о сохранности и ликвидности, общих для всех потоков, данных.
Создание потока.
Первичный поток, который присутствует в программе, начинает свое выполнение с главной функции потока типа WinMain.
Для создания вторичного потока необходимо создать и для него входную функцию, которая выглядит примерно так:
Имя у функции вторичного потока, в отличии от первичного, может быть любым однако, при наличии нескольких разных потоков, назвать функции необходимо по-разному, иначе система создаст разные реализации одной и той же функции.
Когда поток закончит свое исполнение, он вернет управление системе, память, отведенная под его стек, будет освобождена, а счетчик пользователей его объекта ядра "поток" уменьшится на 1. Когда счетчик обнулится, этот объект ядра будет разрушен.
Для создания своего потока необходимо использовать функцию CreateThread:
При каждом вызове этой функции система создает объект ядра (поток). Это не сам поток, а компактная структура данных, которая используется операционной системой для управления потоком и хранит статистическую информацию о потоке.
Система выделяет память под стек потока из адресного пространства процесса. Новый поток выполняется в контексте того же процесса, что и родительский поток. Поэтому он получает доступ ко всем описателям объектов ядра, всей памяти и стекам всех потоков в процессе. За счет этого потоки в рамках одного процесса могут легко взаимодействовать друг с другом.
CreateThread - это Windows-функция, создающая поток. Если вы пишете код на С/С++ не вызывайте ее. Вместо нее Вы должны использовать _beginthreadex из библиотеки Visual C++. Почему это так важно в наших следующих выпусках.
Параметры функции CreateThread.
LpThreadAttributes - является указателем на структуру LPSECURITY_ATTRIBUTES. Для присвоения атрибутов защиты по умолчанию, передавайте в этом параметре NULL.
DwStackSize - параметр определяет размер стека, выделяемый для потока из общего адресного пространства процесса. При передаче 0 - размер устанавливается в значение по умолчанию.
LpStartAddress - указатель на адрес входной функции потока.
LpParameter - параметр, который будет передан внутрь функции потока.
DwCreationFlags - принимает одно из двух значений: 0 - исполнение начинается немедленно, или CREATE_SUSPENDED - исполнение приостанавливается до последующих указаний.
LpThreadId - Адрес переменной типа DWORD в который функция возвращает идентификатор, приписанный системой новому потоку.
Завершение потока
Поток можно завершит четырьмя способами:
функция потока возвращает управление (рекомендуемо);
поток самоуничтожается вызовом функции ExitThread;
другой поток процесса вызывает функцию TerminateThread;
завершается процесс, содержащий данный поток.
Все способы , за исключением рекомендуемого, являются нежелательными и должны использоваться только в форс-мажорных обстоятельствах.
Функция потока, возвращая управление, гарантирует корректную очистку всех ресурсов, принадлежащих данному потоку. При этом:
любые С++ объекты, созданные данным потоком, уничтожаются соответствующими деструкторами;
система корректно освобождает память, которую занимал стек потока;
система устанавливает код завершения данного потока. Его функция и возвращает;
счетчик пользователей данного объекта ядра (поток) уменьшается на 1.
При желании немедленно завершить поток изнутри используют функцию ExitThread(DWORD dwExitCode).
При этом освобождаются все ресурсы ОС, выделенные данному потоку, но С С++ ресурсы (например, объекты классов С++) не очищаются. Именно поэтому не рекомендовано завершать поток, используя эту функцию.
Если же вы ее использовали, то кодом возврата потока будет тот параметр, который вы передадите в данную функцию.
Как и для CreateThread для библиотеки Visual C++ существует ее аналог _endthreadex, который и стоит использовать. Об причинах в следующем выпуске.
Если появилась необходимость уничтожить поток снаружи, то это моет сделать функция TeminateThread.
Эта функция уменьшит счетчик пользователей объекта ядра (поток) на 1, однако при этом не разрушит и не очистит стек потока. Стек будет существовать, пока не завершится процесс, которому принадлежит поток. При задачах, постоянно создающих и уничтожающих потоки, это приводит к потере памяти внутри процесса.
При завершении процесса происходит следующее.
Завершение потока происходит принудительно. Деструкторы объектов не вызываются, и т.д. и т.д.
При завершении потока по такой причине, связанный с ним объект ядра (поток) не освобождается до тех пор, пока не будут закрыты все внешние ссылки на этот объект.
Проблемы соединения волоконных световодов приобрели особую актуальность при разработке технологии их промышленного применения. Выбор способа сращивания зависит от условий применения волоконной оптики.
Очевидно, что значительные преимущества при использовании волоконно-оптических технологий в телекоммуникационной отрасли, связанные с улучшением целого ряда технико-экономических показателей (возрастанием скорости передачи информации, увеличением длины регенерационного участка, уменьшением массогабаритных характеристик кабелей, экономией цветных металлов и др.), предопределят в будущем широкое внедрение волоконной оптики при построении линий связи различных уровней. Однако необходимо было разработать методики сращивания волоконных световодов, обеспечивающие высокие качественные и вместе с тем достаточно технологичные и доступные показатели, чтобы сделать возможным применение этих световодов не только в стационарных, но и в полевых условиях.
Строительная длина волоконно-оптического кабеля на практике устанавливается, исходя из ряда факторов. Прокладка больших длин кабеля неудобна вследствие необходимости сматывания с барабана и манипуляций с кабелем как во время прокладки в полевых условиях (при пересечении других подземных коммуникаций), так и в городских условиях (при прокладке в кабельную канализацию). Прокладывая кабель с помощью кабелеукладочной техники, также возникают неудобства, связанные с манипуляциями большими длинами, если для погрузочно-разгрузочных работ приходится использовать специализированную технику. Особенно остро стоит проблема манипуляции строительными длинами с большой удельной массой при прокладке глубоководных морских кабелей и кабелей для прибрежной зоны. Из-за необходимости инсталляции кабелей максимально возможной длины для их транспортировки по суше используются спаренные железнодорожные платформы, на которых кабели выкладываются в форме "8", а не на кабельные барабаны. Таким образом кабель транспортируется по суше до погрузки на судно.
Для соединения оптических волокон разработаны два способа соединений: разъемные и неразъемные. Неразъемные соединения оптических волокон осуществляются методом сварки, методом склеивания, а также с помощью механических соединителей. Для создания разъемных соединений оптических волокон используются оптические коннекторы.
Соединения оптических волокон с помощью сварки
Соединение оптических волокон с помощью сварки является сегодня наиболее распространенным методом получения неразъемных соединений. Благодаря в достаточной мере совершенной технологии этот метод позволяет получать качественные соединения с низкими показателями вносимых потерь (порядка 0,1-0,15 дБ), что обуславливает его применение на линиях связи, где этот показатель входит в приоритетные - магистральные, зоновые и другие - высокоскоростные ВОЛС.
Сваривание оптических волокон предусматривает оплавление концов волоконных световодов путем помещения их в поле мощного источника тепловой энергии, как, например, поле электрического разряда, пламя газовой горелки, зона мощного лазерного излучения.
Каждый из перечисленных методов имеет свои достоинства и недостатки. Достоинством метода сварки с помощью лазера можно считать возможность получения чистых соединений из-за отсутствия в них сторонних примесей, и, как следствие, достаточно малых вносимых потерь (0,1 дБ и менее). Как правило, в качестве источника лазерного излучения высокой мощности (до 5 Вт) используются газовые лазеры на СО2.
К достоинствам метода сварки с помощью газовой горелки следует также отнести возможность получения соединений оптических волокон, отличающихся высокой прочностью мест сростков. В качестве источника пламени используют смесь пропана с кислородом или соединение кислорода, хлора и водорода. Этот метод распространен по большей части для сварки многомодовых оптических волокон.
Основным достоинством сварки в поле электрического разряда является быстрота и технологичность. Этот метод в настоящее время приобрел наибольшую популярность для сварки одномодовых световодов.
Аппараты для сварки оптических волокон можно классифицировать следующим образом: по способу юстировки свариваемых концов оптических волокон (в зависимости от геометрических размеров сердцевин или от потерь мощности светового сигнала, распространяющегося через место сварки); по способу проведения операций (ручные или автоматические); по типу устройства контроля (микроскоп, монитор на жидких кристаллах); по количеству оптических волокон, которые могут быть сварены одновременно (одно- и многоволоконные).
При сварке оптических волокон в поле электрического разряда можно выделить такие технологические этапы:
* подготовка торцевых поверхностей соединяемых оптических волокон;
* надевание защитной термоусаживаемой гильзы на одно из соединяемых волокон;
* установка подготовленных концов оптических волокон в направляющие системы сварочного аппарата;
* юстировка свариваемых оптических волокон;
* предварительное оплавление торцов оптических волокон (fire cleaning) с целью ликвидации микронеровностей, возникающих в
* процессе скалывания;
* непосредственное сваривание оптических волокон;
* предварительная оценка качества сварки;
* защита места сварки с помощью термоусаживаемой гильзы;
* окончательная оценка качества сварки с помощью рефлектометра.
Существует два способа юстировки. Первый базируется на выравнивании сердцевин свариваемых оптических волокон по их геометрическим размерам (Profile Alignment System PAS) с помощью боковой подсветки концов свариваемых волокон.
Второй способ основан на выравнивании сердцевин оптических волокон по принципу минимизации потерь тестового светового сигнала, распространяющегося через место сварки.
Что касается активной юстировки, то известно три метода.
Первый заключается в использовании оптического излучателя и приемника на противоположных концах оптических волокон, подлежащих сварке. Информация от приемника передается персоналу, производящему сварку.
Второй метод сводится к использованию оптического передатчика на дальнем конце и детектора в точке соединения. Тестовый оптический сигнал выводится из соединяемого оптического волокна на небольшом (примерно 0,5 м) расстоянии от места сварки на изгибе и детектируется приемником, оборудованным измерителем оптической мощности.
Третий метод реализует LID (Local Injection and Detection) - процедуру юстировки, ограниченную исключительно местом соединения. В основу этого метода положено введение тестового оптического сигнала в сердцевину одного из соединяемых оптических волокон и поиск его в сердцевине второго соединяемого волокна путем изгиба.
Метод LID является наиболее эффективным, поскольку, в отличие от метода PAS, качество сварного соединения в большей мере зависит от сварочного аппарата, а не от индивидуального мастерства персонала. В современных сварочных аппаратах для управления процессами юстировки и сварки используются микропроцессоры, с помощью которых возможна оптимизация процесса сварки для получения минимальных (менее 0,1 дБ) потерь в местах соединений оптических волокон.
В процессе оплавления оптические волокна подаются одновременно для предотвращения укорачивания одного из них в месте сварки. Операции оплавления и сваривания, как правило, выполняются автоматически. В современных автоматических сварочных аппаратах для снятия механического напряжения в точке соединения оптических волокон предусмотрен режим прогревания места стыка по окончании процесса сварки. Такой режим называется "режимом релаксации".
Цикл плавления (длительность подачи и сила тока как для предварительного оплавления, так и для сварки и релаксации) для оптических волокон различных производителей и типов различны.
Некоторые сварочные аппараты, кроме рассмотренных выше способов контроля качества места сварки, используют еще и тест на растяжение во избежание нарушения соединения во время манипуляций при выкладке сростков в кассету, а также в дальнейшем, в процессе эксплуатации. Соединенное оптическое волокно прочно закреплено в направляющих платформах (которые используются при юстировке). Под контролем микропроцессора по завершении этапа сварки эти направляющие платформы расходятся в противоположные стороны, образуя строго нормированное продольное усилие на растяжение, приложенное к месту стыка. Считается, что стык, прошедший такое тестирование, более надежен и выполнен более качественно. При невозможности получения стыка, способного пройти этот тест, но удовлетворяющего по параметрам передачи, эту опцию можно отключить.
Особо следует отметить сварку ленточных элементов (ленточных волоконно-оптических кабелей, отличающихся большим количеством оптических волокон). Эту операцию можно проводить, только применяя полностью автоматический сварочный аппарат, с помощью которого можно соединить до 12 оптических волокон приблизительно за 3 минуты, причем средний уровень потерь составит около 0,1-0,15 дБ. Однако для сваривания ленточных элементов необходим опытный, хорошо подготовленный персонал.
Во время сварки оптические волокна размещаются с соответствующим смещением от оси электродов, что обеспечивает равномерное нагревание. До начала процесса сваривания и по его завершении проверяется смещение оптических волокон, состояние торцевых поверхностей, а также деформация.
При сваривании ленточных элементов необходимо, кроме основных процессов, рассмотренных ранее, провести еще три технологические операции: устранить расхождения торцов соединяемых оптических волокон, плавление всех волокон выполнить одновременно с одинаковой температурой, в процессе предварительной оценки измерить уровень вносимых потерь рефлектометром. Если оказалось, что результаты не отвечают требованиям, процесс сварки повторяют.
Как показывает практика, предварительная оценка качества сварных соединений оптических волокон, базирующаяся на методе РАС, может содержать погрешность в диапазоне 5-1000%, поэтому окончательный вывод о качестве сварного соединения стоит делать после измерений рефлектометром.
По мере совершенствования качества сварочного оборудования и технологии сварки возрастают возможности получения сварных соединений оптических волокон высокого качества. Потери на сварных соединениях зависят от нескольких факторов: опыта персонала, геометрических погрешностей свариваемых оптических волокон, а также от материалов, из которых изготовлены волокна. Особенно часто проблемы возникают при сварке оптических волокон различных производителей. Дело в том, что оптические волокна различных производителей изготавливаются с использованием принципиально отличающихся друг от друга технологических процессов. В результате материал оптических волокон - кварцевое стекло - не является идентичным в волокнах различного происхождения, несмотря на то, что параметры оптических волокон, указанные в спецификациях фирм-производителей, отличаются незначительно.
Факторами, определяющими свойства стекла, являются технология изготовления и качество материалов. Многочисленные исследования показали, что тысячные доли процента примесей в кварцевом стекле оказывают большее влияние, чем добавки в десятки процентов тех же компонентов к многокомпонентным стеклам.
Для сварки наибольшее влияние имеют следующие характеристики: плотность, коэффициент теплового расширения, показатель преломления, вязкость и механические характеристики. Эти параметры определяют оптические потери в местах сращивания и должны приниматься во внимание при использовании оптических волокон, произведенных по различным технологиям, в пределах одного элементарного кабельного участка ВОЛС. Особое внимание следует уделять идентификации оптических волокон в кабеле по типу, производителю и технологии изготовления.
Более совершенные аппараты для сварки оптических волокон содержат программы, оптимизирующие процесс сварки для оптических волокон различных типов и различных производителей, однако на практике нередки ситуации, когда, используя стандартные программы, невозможно получить качественную сварку. В этих случаях необходимо самостоятельно корректировать параметры процесса (время и ток, подаваемый на электроды) для достижения оптимальных результатов.
[pagebreak]
Наиболее часто сварка оптических волокон различных производителей производится при оконцовке оптических волокон пигтейлами, а также при ремонтно-восстановительных работах, если эксплуатационный запас кабеля израсходован, и приобретение полностью идентичного кабеля невозможно (к примеру, по причине снятия с производства оптического волокна такого типа, который использовался первоначально) или экономически нецелесообразно.
В общем виде величина потерь в местах сварных соединений может быть представлена как суммарная величина: Dобщ = Dор + Dдм + Dую + Dнм + Dрпп, где: Dобщ - суммарная величина потерь в сварке; Dор - потери из-за осевого рассогласования модовых полей равного диаметра; Dдм - потери из-за разницы диаметров модовых полей; Dую - потери от погрешности угловой юстировки осей оптических волокон; Dнм - потери, обусловленные не-круглостью модовых полей; Dрпп - потери из-за разницы показателей преломления.
Изучение параметров и характеристик различных одномодовых оптических волокон показывает, что разброс величины диаметра модового поля для l = 1310.1330 нм или l = 1500...1550 нм может составлять от 10,5 до 21,7% (9,2 0,5 мкм). Такое рассогласование приводит к появлению потерь от 0,05 дБ до 0,25 дБ (с положительным знаком, когда излучение проходит из волокна с большим диаметром в волокно с меньшим диаметром, и отрицательным - в противоположном направлении). Эти потери будут иметь место, даже если аппарат расположит соосно два волокна с разными диаметрами сердцевин, у которых эксцентриситет пренебрежительно мал. Обычно разброс величины модового поля оптического волокна не превышает 14%, таким образом, величина этой составляющей - не более 0,1 дБ.
Составляющая Dую практически не компенсируется современным сварочным оборудованием. Установлено, что углы между осями сердцевин 0,5°; 1°; 1,5°; 2° вызывают приращение потерь соответственно в 0,08; 0,34; 0,77 и 1,5 дБ. Таким образом, благодаря надлежащей подготовке торцов соединяемых оптических волокон при скалывании можно уменьшить потери - необходимо обеспечить наименьший (не более 0,5°) угол между плоскостями торцов оптических волокон. В этом случае величина потерь не превысит 0,08 дБ.
Составляющая Dнм учитывает влияние некруглости модового поля. По приблизительным оценкам она равна 0,05 дБ.
При соединении сваркой оптических волокон, имеющих неконцентричность модового поля, часто возникает нарушение юстировки сердцевин вследствие действия сил поверхностного натяжения. Это нарушение можно минимизировать следующими способами:
* сокращение времени плавления за счет неполного сваривания оптических волокон или же сокращение длины свободного конца оптического волокна в сварочном устройстве, чтобы концы оптических волокон в процессе сварки могли перемещаться на очень малое расстояние;
* использование компенсационных программ, таких как управление смещением сердцевины с помощью метода умышленного смещения осей.
Такой режим получил название RTC (Real Time Control). В этом режиме после юстировки сердцевин свариваемых оптических волокон и проведения процедуры предварительного оплавления происходит компенсация поперечного смещения сердцевин в сторону, противоположную производной расхождения.
Сварка оптических волокон осуществляется посредством чередования коротких импульсов тока высокой интенсивности с импульсами тока низкой интенсивности (релаксационными импульсами). При этом после сваривания в электрическом поле импульса высокой интенсивности в поле релаксационного импульса происходит перемещение оптических волокон под действием поверхностного натяжения. Количество чередующихся импульсов зависит от смещения сердцевин оптических волокон, которое постоянно контролируется сварочным аппаратом; как правило, количество импульсов не превышает 2-3.
Весьма существенное влияние на общую величину потерь, если свариваются оптические волокна с разными показателями преломления (N) сердцевины, может оказать составляющая Dрпп. Эта составляющая учитывает потери мощности оптического сигнала в результате несоблюдения условия полного внутреннего отражения на месте стыка двух оптических волокон, у которых показатели преломления сердцевин имеют различия. В этом случае часть оптического сигнала проникает через оболочку волокна и рассеивается. Ситуация усугубляется многократным отражением луча от границы "сердцевина/оболочка", каждое из которых (отражений) служит источником потери мощности. На практике нередки случаи, когда даже многократные повторные сварки не позволяют добиться малой величины потерь.
Наибольший вклад в суммарную величину потерь вносят потери от погрешности угловой юстировки осей оптических волокон и потери из-за разницы показателей преломления.
Международная электротехническая комиссия предлагает в качестве типичной характеристики сварного соединения оптических волокон, полученного в полевых условиях, величину вносимых потерь, равную 0,2 дБ (IEC 1073-1). При современном развитии технологии сварки оптических волокон этот показатель вполне достижим даже тем персоналом, который не обладает значительным опытом в этой области.
Соединение оптических волокон методом склеивания
Практически одновременно с методом сварки был разработан метод склеивания оптических волокон. Для получения клеевых соединений используют совмещение и фиксацию оптических волокон: в капилляре, в трубке с прямоугольным сечением, с помощью V-образной канавки и с помощью трех стержней в качестве направляющих. Оптические волокна соединяются поодиночке.
Технология получения таких соединений состоит из следующих этапов:
* подготовка оптических волокон к соединению (очистка, снятие буферных покрытий, скалывание);
* ввод оптического волокна в капилляр;
* наполнение иммерсионной жидкостью, гелем или клеем;
* регулирование соединения, юстировка оптических волокон;
* нанесение адгезивного вещества;
* цементирование адгезивного вещества с помощью ультрафиолетового излучения.
Клей, используемый для оптических волокон, должен иметь коэффициент преломления, близкий к коэффициенту преломления волокон. Он должен обеспечивать фиксированное положение соединенных оптических волокон, защищать место сращивания от воздействий окружающей среды, гарантировать прочность сростка при воздействии нагрузок в осевом направлении. К достоинствам этого метода следует отнести оперативность и отсутствие деформации сердцевин соединяемых оптических волокон. Это способствует тому, что в области стыка - малые потери, обеспечиваются хорошие механические свойства и т.п. Однако ограниченный срок службы и нестабильность во времени, а также весьма высокая чувствительность к повышению температуры и воздействию влажности являются факторами, сдерживающими распространение этого метода получения неразъемных соединений. В настоящее время он уступил свои позиции методу соединения оптических волокон с помощью механических соединителей.
Механические соединители оптических волокон
Механические соединители оптических волокон разрабатывались как более дешевый и быстрый способ сращивания оптических волокон. Применение аппарата для сварки оптических волокон сопряжено с необходимостью соблюдения ряда условий: для работы используется помещение, параметры которого (температурный диапазон, влажность, давление, вибрации и проч.) соответствуют требованиям производителей сварочного оборудования; также необходима организация питания от сети переменного тока с достаточно жестко регламентированными параметрами. При стоимости комплекта оборудования для сварки оптических волокон, составляющей десятки тысяч долларов США, амортизационные отчисления, а также техническое обслуживание и ремонт являются довольно дорогостоящими.
Достаточно высокие требования предъявляются также к персоналу, производящему работы по сварке оптических волокон. Часто этими же лицами производится наладка и обслуживание аппаратов для сварки оптических волокон (очистка направляющих поверхностей и зажимов, замена электродов и проч.), для чего требуются специалисты с высоким уровнем квалификации.
Всех этих сложностей можно избежать, применяя механические соединители оптических волокон. Конструкция оптических соединителей относительно проста. Основными узлами являются направляющие для двух оптических волокон и устройство фиксации волокон. Внутреннее пространство заполняется тиксотропным гелем для защиты открытых участков оптических волокон от воздействия влаги. Одновременно гель обладает иммерсионными свойствами - его показатель преломления близок к показателю преломления сердцевины волокна.
Процедура монтажа оптических соединителей является частью процедуры монтажа промежуточного или оконечного устройства - кабельной муфты, бокса или стойки. Размеры и форма оптических соединителей позволяют устанавливать их в кассету муфты или бокса аналогично сросткам оптических волокон, полученных путем сварки.
Процедура монтажа включает в себя следующие технологические операции:
* разделка кабелей;
* очистка оптических волокон от гидрофобного геля (при его наличии);
* снятие буферных покрытий соединяемых оптических волокон на участках длиной, рекомендуемой производителями оптических соединителей конкретного типа;
* скалывание оптических волокон;
* проверка качества скола волокон;
* введение соединяемых волокон в отверстия с направляющими;
* позиционирование волокон в соединителе для достижения оптимальных параметров соединения;
* фиксация оптических волокон в соединителе;
* тестовые измерения соединения.
Особое место среди оптических механических соединителей занимает RMS (Rotary Mechanical Splice) как наиболее сложный среди аналогов. Процесс его монтажа наиболее трудоемок, однако он позволяет достичь наименьших потерь при соединении одномодовых волокон. В отличие от остальных соединителей, где величина потерь главным образом зависит от качества скола торцевых поверхностей оптических волокон, этот соединитель позволяет юстировать волокна простым вращением вокруг своей оси стеклянных втулок, удерживающих подготовленные оптические волокна, и добиваться наилучших результатов.
Следует отметить, что применение механических соединителей является наиболее быстрым способом соединения оптических волокон. При этом вносимое затухание практически не отличается от затухания, создаваемого сварным соединением. Достаточно устойчивое функционирование механических соединителей в процессе эксплуатации позволяет уже сегодня рекомендовать их для широкого внедрения на телекоммуникационных сетях с невысокими требованиями к качеству соединений, а также в случаях, когда использование аппарата для сварки оптических волокон технологически затруднено или вообще невозможно. В дальнейшем статистика технической эксплуатации, а также совершенствование материалов компонентов механических соединителей, вероятно, определит их более широкое применение для строительства телекоммуникационных волоконно-оптических линий различных уровней.
Обращает на себя внимание тот факт, что механические соединители оптических волокон условно допускают однократное использование, однако на практике встречаются ситуации их многократного применения. Производители гарантируют качество соединения оптических волокон при повторном монтаже соединителя не более 2-3 раз, однако при повторном наполнении внутреннего пространства иммерсионным гелем (в тех конструкциях, где это предусмотрено) такие соединители использовались многократно без ущерба для качества стыков. Некоторыми производителями механических соединителей разработаны механизмы фиксации, предусматривающие использование специального ключа для открытия фиксатора.
Сегодня использование механических соединителей наиболее удобно при проведении аварийного ремонта волоконно-оптическихлиний для технологической операции организации временной вставки.
В кабельной инфраструктуре традиционным решением по организации кабельных трасс является прокладка кабелей и проводов в системах кабельных каналов, при этом все большее внимание производители уделяют технологичности монтажа.
Ни одно современное здание нельзя представить без кабельной канализации, куда укладываются кабели для различных типов сетей (электрических, телефонных, компьютерных, телевизионных, систем оповещения, сигнализации и др.). Она должна обеспечивать простоту прокладки и обслуживания, надежную и удобную коммутацию, простое наращивание кабельных систем, их последующую модернизацию и реконфигурацию, а также обладать достаточной емкостью для размещения резервных кабельных линий. Кроме того, необходимо соответствие нормам пожарной безопасности, госстандарта, эпидемиологической службы.
Для решения этих задач разработчики совершенствуют системы укладки кабелей с использованием гофрированных и жестких труб, кабель-каналов и коробов, а первостепенными требованиями становятся удобство и быстрота монтажа СКС, электропроводки и кабеленесущих систем. Поставщики кабеленесущих систем адаптируют свои продукты к изменениям в технологиях СКС и нуждам заказчиков, пытаясь найти оптимальное соотношение между себестоимостью и качеством продукции.
Современные кабеленесущие системы позволяют быстро добавлять электроустановочные изделия и кабель, а специальные решения помогают в несколько раз ускорить монтаж силовых розеток. По данным «Остек-Ком», время монтажа кабеленесущих систем от разных поставщиков может различаться в полтора раза.
Между тем российские потребители становятся все более требовательными к качеству изделий, пожаростойкости, долговечности, а отечественные нормы пересматриваются с целью их унификации в соответствии с международными стандартами. В числе первоочередных требований к кабеленесущим системам на российском рынке в «Остек-Ком» называют невысокую стоимость (особенно для регионов) и наличие большого складского запаса, а также полноту системы — ассортимент необходимых аксессуаров для построения и монтажа кабельной трассы. Среди качественных параметров системы наиболее существенными являются удобство, надежность и быстрота организации кабельной проводки, поскольку это непосредственно отражается на экономичности решения. Как отмечают в компании ДКС, сегодня эталон кабеленесущей системы — удобный в монтаже и эксплуатации продукт, эстетичный, долговечный, соответствующий нормам пожарной и экологической безопасности. По мнению специалистов DNA Trading, легкость и быстрота монтажа кабеленесущих систем, прочность и долговечность материала, разнообразие и совместимость решений — все, что позволяет снизить стоимость и повысить надежность системы, — остаются насущными требованиями.
Многие работающие на рынке инженерных коммуникаций российские компании и системные интеграторы, занимающиеся монтажом СКС и локальных сетей, дополняют спектр предлагаемых решений в области СКС кабеленесущими и электроустановочными изделиями известных зарубежных и российских поставщиков, а также собственных производственных подразделений.
ОТ СИСТЕМЫ К СИСТЕМЕ
Скрытая проводка электрических силовых, а иногда и слаботочных систем осуществляется при помощи гофрированных труб. Они обеспечивают не только защиту от механических повреждений, проникновения влаги и возгорания, но и удобство монтажа, позволяя впоследствии проложить дополнительную проводку или заменить ее. В отличие от металлорукава, гофротруба не подвержена коррозии, не требует заземления, монтируется намного быстрее, существенно дешевле и легче. Для крепежа труб выпускается широкий ассортимент коробок и компонентов. Вместе с аксессуарами такие изделия образуют систему, куда входит все необходимое для монтажа на объектах. Цель разработки подобных систем — создание надежного комплекса для прокладки электропроводки с гарантированной экономией за счет удешевления материалов и сокращения времени монтажа, ведь, по данным ДКС, затраты на монтажные работы составляют до 70% от стоимости системы.
Гофрированная труба — массовый продукт, широко применяемый при прокладке силовой проводки и слаботочных кабелей. Трубы из ПНД «Октопус» серии 7’’ компании ДКС при сохранении прочностных и изоляционных свойств не содержат дорогостоящих добавок, препятствующих горению, и чаще всего используются при монолитном строительстве.
Для скрытой проводки внутри жилых и рабочих помещений ДКС предлагает систему «Октопус». Это гофротрубы нескольких серий, корпуса встраиваемых щитков и транзитных коробок, а также аксессуары для монтажа. Материал труб различается по цвету: в голубой окрашены полипропиленовые трубы (ПП) с повышенной эластичностью и устойчивостью к воздействию низких и высоких температур (от –40 до +100°C), в серый — негорючие трубы из поливинилхлорида (ПВХ), а в оранжевый и черный — трубы из полиэтилена низкого давления (ПНД). Компания планирует расширить спектр продукции и уже в этом году представить систему двустенных труб для прокладки кабельных трасс в грунте.
Предприятие «Экопласт» ориентируется на профессиональный рынок. Гофрированные трубы из композиций ПВХ и ПНД легкого и тяжелого типов изготавливаются на оборудовании немецких и итальянских производителей. Под системой в компании понимают весь спектр оборудования, необходимого для монтажа кабельной трассы, с дополнительными элементами. Она должна быть универсальна и обеспечивать реализацию всевозможных вариантов кабельной проводки. Системы «Экопласт» включают гофротрубы для прокладки кабелей в различных помещениях и средах, в том числе серию FL (легкая) и FH (тяжелая) с внешним диаметром от 16 до 50 мм, наружные и внутренние распределительные коробки и щитки. Они имеют степень защиты IP55 (по ГОСТ 14254/МЭК 529).
По данным статистики, до 95% пожаров происходит из-за электропроводки, поэтому особое внимание уделяется требованиям безопасности и качеству материалов. Чтобы исключить возгорание кабеля от короткого замыкания в силовой проводке и распространение пламени по трубе и кабелю, применяются самозатухающие композиции ПВХ, однако в соответствии с действующими в России нормативами при скрытой установке каналов в стенах и потолках из горючих материалов монтажники нередко вынуждены использовать металлические трубы.
Тем не менее, как отмечают в ДКС, сфера применения гофротруб очень широка: они могут использоваться при заливке в бетон или укладке под штукатурку, в конструкциях теплых полов, в длинных трассах. Гофротрубы из полиэтилена высокого давления (ПВД) прокладывают под землей и на наружных негорючих поверхностях. В тяжелом варианте (для заливки в бетон) они имеют утолщенную стенку.
Традиционное практичное решение — система гладких пластиковых жестких труб. По данным «Экопласт», фитинги (соединительные элементы) обеспечивают степень защиты от IP54 до IP65. Гладкие жесткие трубы из ПВХ широко применяются для магистральной прокладки кабеля, скрытой и открытой электропроводки в стенах жилых, административных и промышленных помещений. Такие решения тяжелее гофрированных труб на 40%, но их вес можно назвать средним, а значит, удобным для монтажа и транспортировки. Прокладка кабеля в гладкой трубе не представляет особых трудностей, времени затрачивается меньше, а негорючий материал исключает распространение пламени по трубе. Удобство и скорость монтажа системы гладких труб нашли отражение в названиях несущих систем ДКС — «ЭКСПРЕСС 4» (IP40) и «ЭКСПРЕСС 6» (IP65). В число аксессуаров входят корпуса для наружного монтажа электроустановочных изделий ВИВА от ДКС. Система гладких труб серии RIG от «Экопласт» обычно используется для электропроводки в подвалах и гаражах зданий, в промышленных цехах и на открытых площадках.
Иногда система должна быть не только прочной, но и гибкой. В этом случае используются гибкие армированные трубы из модифицированного пластиката. Трубы от «Экопласт», армированные спиралью из ПВХ, применяются для защиты кабелей машин, станков и промышленного оборудования с подвижными частями. Они устойчивы к агрессивным средам и влаге (IP64), выдерживают динамические нагрузки. ДКС выпускает гибкие армированные трубы с прочным спиралевидным каркасом, залитым пластикатом ПВХ для герметизации. В комплексе с гладкой жесткой трубой и аксессуарами для монтажа такие изделия позволяют строить информационные и силовые сети на любых сложных участках.
Гофротрубы из ПВХ, ПНД и полиэтилена высокого давления (ПВД) выпускает также завод «Рувинил». Это жесткие и гладкие трубы 16—63 мм, а также двустенные трубы (ПНД/ПВД), цвет которых указывает на область их применения (прокладка электрокабеля, системы связи и телекоммуникаций или кабельные линии общего назначения). Аналогичную продукцию производит и ряд других предприятий. Поставщики стараются учитывать требования, предъявляемые российскими компаниями к кабеленесущим системам, и стремятся быть в курсе зарубежных технологий, дабы предложить качественную продукцию с улучшенными монтажными свойствами, тем более что на их заводах установлено высокотехнологичное европейское оборудование. Освоив технологии производства пластиковых изделий, они переходят к выпуску более сложных видов продукции — системам пластиковых кабель-каналов.
КАЖДОМУ ПО ПОТРЕБНОСТЯМ
Способы прокладки кабелей в административных и офисных помещениях различны. Они могут располагаться в подвесных потолках, фальшполах или в залитых в бетон желобах и разводиться до рабочих мест с помощью лючков и мини-колонн. Однако с начала 90-х гг. на отечественном рынке наиболее широкое распространение получила открытая проводка информационных, телефонных, оптических, силовых и видеокабелей в настенных коробах, что упрощает обслуживание и реорганизацию кабельной системы.
Короб — замкнутый профиль с плоским основанием и с защелкивающейся крышкой — предназначен для монтажа на поверхность (стены, пола или потолка). Системные изделия имеют в своем составе набор совместимых аксессуаров для прокладки трасс различной сложности, включая настенные каналы (короба), соединительные и ответвительные аксессуары, элементы крепления электроустановочных изделий, телефонные и компьютерные розетки.
Кроме соответствия ГОСТам и ТУ, а также стандартам на проводку электрических силовых и слаботочных кабелей, рынок диктует и другие требования, а именно — широкий спектр аксессуаров, конкурентная цена и эстетичный вид. Дополнение системы коробов полным набором аксессуаров вкупе с продуманностью конструкции помогает быстро и легко монтировать их и прокладывать кабельные сети. Как отмечают в DNA Trading, наряду с традиционными требованиями к дизайну, долговечности самого пластика и его окраски, разнообразию типоразмеров и фитингов для всевозможных вариантов соединения, производители выпускают все более удобные и разнообразные решения. Это фитинги с изменяемым углом поворота короба и автоматическим обеспечением необходимого радиуса изгиба кабеля; короба со специальной конструкцией, чтобы кабель не приходилось фиксировать при монтаже; розетки, установку которых можно осуществить без специальных инструментов и навыков и т. д. Накладные аксессуары с защелками (без винтов) упрощают монтаж, к тому же они дешевле сборных.
Среди других требований — возможность различных соединений с переходом от короба одного сечения к другому для создания разветвленной сети, модульная конструкция в расчете на установку розеток различных типов, наличие креплений, например суппортов быстрой фиксации, простой и удобный доступ к проводке. Кабельные каналы должны быть устойчивыми к агрессивным средам и загрязнению, легко очищаться от пыли, обладать такими свойствами, как высокая гибкость и пластичность, способность выдерживать механические нагрузки, химическая стабильность в цветности, негорючесть.
Короба используют не только для подвода комбинированных сетей к рабочим местам, но и для создания магистральных каналов. Кабели прокладывают с учетом 30—50% запаса по сечению (на случай модернизации и развития кабельной системы), с соблюдением необходимого расстояния между информационной и силовой проводкой.
На российском рынке популярны пластиковые установочные короба. Этот материал отличается хорошими диэлектрическими параметрами, прочностью, химической стойкостью, а главное — ценой. При необходимости некоторые виды коробов можно окрасить. Выпускаются и цветные их модели, но стоят они значительно дороже — производители относят такие решения к категории эксклюзивных. По оценке «Экопласт» около 90% рынка составляют короба белого цвета.
[pagebreak]
Алюминиевые и стальные короба, как считают в ДКС, — специфическая продукция, применяемая там, где к электроустановке предъявляются особые требования. Они тяжелее, в три-четыре раза дороже пластиковых, их труднее монтировать. Поэтому до 90% уже установленных коробов изготовлены из композиций ПВХ с добавлением различных модификаторов. Такие системы не требуют заземления, обладают высокими электроизолирующими свойствами, малым весом и гибкостью. Вместе с тем, системным интеграторам подчас приходится сталкиваться с проектами, где требуется применение алюминиевых коробов. В «Сонет Текнолоджис» отмечают такие их качества и свойства, как пожаробезопасность, прочность и износостойкость. По мнению специалистов «Остек-Ком», спрос на подобные короба, весьма распространенные за рубежом, может вырасти, однако в DNA Trading полагают, что электропроводящие короба вряд ли составят конкуренцию пластиковым по причине дороговизны, сложности монтажа и требований к заземлению.
Сегодня на российском рынке представлено большое число популярных зарубежных марок кабельных каналов — Aesma, Efapel, GGK, Iboco, LAP, Marshall Tufflex, MITA, MK Electric, Quintela, Niedax, Rehau, Thorsman, Panduit и ряда других. Аналогичную продукцию выпускают и российские производители — ДКС, «Экопласт», «Электропласт», «Техпласт», «Рувинил» и др. Несмотря на внешнее сходство, изделия различаются стоимостью, качеством, долговечностью, удобством монтажа и эксплуатации, дизайном, разнообразием аксессуаров и типоразмеров. Экономия времени и затрат во многом зависит от применяемых технологических подходов и конструктивного исполнения продукции.
На отечественном рынке пластиковых коробов по-прежнему наиболее известна продукция французской компании Legrand. Она начала поставки этой продукции в Россию одной из первых, и ее марка стала здесь синонимом кабельного канала. Компания и сегодня предлагает одну из самых полных и удобных систем коробов DLP с широким выбором типоразмеров для монтажа СКС любой сложности, но ее продукция не относится к разряду дешевых решений, поэтому системные интеграторы и компании, специализирующиеся на проектных решениях, часто пытаются найти альтернативные продукты, оптимальные по соотношению цена/качество.
Некоторые поставщики дополняют зарубежную продукцию недорогой отечественной. Как отмечают в «Остек-Ком», изделия Thorsman и MITA способны удовлетворить любые требования, но довольно дороги, поэтому компания расширила продуктовую линейку кабель-каналами из ПВХ от «Экопласт», обладающими надлежащим качеством и привлекательной ценой. «Веритек Дистрибьюшн» и «Сонет Текнолоджис» в качестве поставщика кабельных каналов выбрали португальскую компанию Efapel, продукция которой, по их мнению, в своем ценовом сегменте выгодно отличается от конкурентов качеством пластика, большим выбором аксессуаров и полным соответствием распространенным в России стандартам. При сопоставимой с другими известными марками цене за короб, стоимость аксессуаров Efapel заметно ниже, поэтому и готовое решение оказывается дешевле. Среди наиболее интересных новинок — модульные короба Efapel серии 16 с возможностью установки модулей типа 45х45 непосредственно в короб, что помогает быстро расширять кабельные сети. Подобное удобство представляют и короба Consort от MITA, их жесткая конструкция с двойной боковой стенкой позволяет монтировать электроустановочные изделия прямо в короб, а затем устанавливать крышку нужной длины. Тем самым экономится и время, и деньги.
Серию DLP продолжает совершенствовать и Legrand. Новинка года — кабель-каналы с гибкой крышкой. Такое решение обеспечивает быстроту и удобство монтажа короба, поскольку крышку не нужно резать при обходе углов. Среди других решений, нацеленных на сокращение сроков работ, — заранее нарезанные отверстия в задней стенке, благодаря чему короб не нужно сверлить, и защелкивающиеся в кабель-канал суппорты, на которые крепятся лицевые панели и рамки. Для системы DLP разработаны розетки Mosaic с боковым подключением провода. Это экономит не только время, но и место, отведенное для прокладки кабеля. В системе INLINER от ДКС с этой целью применяют электроустановочные изделия ВИВА, где кабель присоединяется к боковой части розеток, а также «выдвинутые» наружу рамки. В результате высвобождается пространство внутри короба, что дает возможность использовать короб меньшего сечения.
В короба Legrand иногда устанавливают электротехнические изделия других производителей. Такой подход удешевляет решения, практически не ухудшая параметров качества и надежности. В частности, один из крупнейших в России производителей электроустановочных изделий компания WESSEN предлагает для установки в кабельные каналы продукцию серии Wessen45. Она состоит из универсальных модулей типоразмера 45х45 мм, включая информационные (Категории 5е), телефонные, силовые розетки, розетки для защищенного питания, одно- и двухклавишных выключателей и выключателей-переключателей (скоро к ним должны добавиться светорегуляторы). Все изделия серии монтируются в кабель-каналы с помощью суппорта. В системе INSTA от «Экопласт» применяются решения для крепления розеток евростандарта (60 мм) или модульных систем 45х45 от WESSEN, Legrand и SOLERA.
У испанской компании Quintela (входит в концерн Legrand) установочные короба EUROQUINT снабжены скобами для фиксации кабеля. От двух до четырех разделительных перегородок крепятся на рейку DIN на дне короба. Такой подход используют большинство производителей. В компании «Кросс Линк» отличительной особенностью EUROQUINT считают систему соединяемых в ряд суппортов, позволяющую организовать рабочие места на любое число пользователей. Для монтажа слаботочных розеток разных производителей предусмотрены адаптеры и переходники. В частности, как отмечают в компании «Тайле», при использовании переходников MMI и MMI/B со стандарта 47х47 на стандарт Mosaic (45х45) возможна установка в коробах Quintela любых модулей 45х45 для компьютерных и электрических розеток, что помогает подобрать экономичные варианты.
Американская компания Panduit применяет для установки коммуникационных и силовых розеток разных поставщиков лицевые панели, защелкивающиеся на основании короба или устанавливаемые на выносные коробки. Розетки могут монтироваться и непосредственно в канал. Конструкция короба обеспечивает защиту от несанкционированного доступа и возможность добавления, перемещения и замены элементов. Panduit предлагает системы кабель-каналов четырех цветов (белый, кремовый, бежевый и серый).
Специалисты DNA Trading в отношении кабельных каналов Panduit отмечают ограничение минимального радиуса изгиба кабеля, возможность использования для СКС других производителей, наличие лицевых панелей для модулей Keystone. У коробов малого сечения LD крышка соединяется с базой при помощи пластичного шарнира, поэтому при прокладке удерживаемый ею кабель не выпадает из короба, что облегчает монтаж. Panduit расширяет ассортимент принадлежностей и выпускает новые серии коробов. Среди новинок — потолочные короба. Интерес представляет и система коробов для офисных перегородок.
По мере создания все более сложных сетей, где кабеля требуется очень много, появляются короба увеличенного сечения. Если средние имеют сечение от 50х50 до 100х50 мм, то большие — от 50х170 до 50х254 мм. Quintela предлагает сдвоенные установочные каналы NETQUINT. Они изготавливаются как из ПВХ, так и из алюминия и допускают использование установочных механизмов Quintela, Legrand, BTicino и др.
Одна из новинок Efapel — расширяемые модульные короба со специальной конструкцией основания. С помощью соединителей несколько коробов стыкуется параллельно, что можно делать и при первоначальной установке, и в ходе эксплуатации в случае расширения сетей. Однако, по данным «Сонет Текнолоджис», популярность такого решения невелика, поскольку трассировка кабельного канала обычно рассчитывается с запасом.
MK Electric производит серию двухсекционных разноцветных коробов Prestige 2Com, обеспечивающих максимальную вместимость: углы фиксируют радиус изгиба кабеля, а сам короб, подобно системе Quintela, состоит из основы и двух крышек. У MK Electric имеется и серия трехсекционных коробов Prestige трех видов из ПВХ и алюминия. Legrand выпускает двухсекционные (65х195) и трехсекционные короба DLP (65x220) с гибкими крышками и внутренними разделителями по длине короба и в углах. Для удобства монтажа на коробах защелкиваются углы и отводы.
Недавно компания Trale приступила к поставкам новых кабельных каналов MK Electric, в большей степени адаптированных для нужд инсталляторов СКС и отвечающих эстетическим запросам требовательных заказчиков. Новая серия коробов Prestige Compact — усовершенствование серии Prestige Plus. Она включает в себя компактные и технологичные трехсекционные короба, специальные регулируемые углы, а монтаж кабеля упрощается благодаря использованию одинарного и двойного установочных мест без дна с двумя боковыми стенками, что позволяет обойтись без дополнительных отверстий. Специальный фиксатор дает возможность соблюсти радиус изгиба.
Гибкость и пластичность коробов из ПВХ облегчают монтаж на неровных поверхностях стен. Угловые соединения (внешние и внутренние) предусматривают различные варианты — от 60—80 до 120°. Регулируемые углы выпускают не только известные зарубежные поставщики, например Legrand и Thorsman, но и отечественные ДКС, «Экопласт» и «Рувинил». У Thorsman подобное решение предусмотрено и для коробов из алюминия.
Британская компания MITA предлагает двухсекционный короб Cableline Duo с возможностью прокладки заземления, а также парапетные короба серии CONSORT SOLO и AMBASADOR. В трехсекционном коробе SOLO съемные крышки имеются только у центральной секции, а перегородки можно снять, создав одно большое пространство. Короб изготовлен из высокопрочного пластика, углы крепятся на защелках. Декоративные короба MITA большого сечения известны на мировом рынке, однако пока мало востребованы в России из-за их высокой стоимости. В «Остек-Ком» отмечают исключительную белизну кабельных каналов MITA из ПВХ — по чистоте и устойчивости цвета эти изделия превосходят продукты многих известных марок.
MITA производит и специальные короба для оптического кабеля FOCUS с выступами на угловых соединениях для обеспечения большего радиуса изгиба кабеля. Для прокладки и распределения массивного пучка оптических кабелей разработан короб серии YS. Набор переходов, аксессуаров и фитингов обеспечивает быструю инсталляцию благодаря специальной системе соединения (clip together). В DNA Trading полагают, что спрос на короба для прокладки оптики в России будет расти. Не так давно новая серия подобных изделий появилась у Panduit, дополнившей серию FiberDuct системой FiberRunner с более широкими возможностями комплектации.
По данным «Кросс Линк», новое решение в этой области разрабатывает и Quintela.
Кабельные короба TWT из ПВХ предлагает российская компания LANMASTER. Это восемь видов коробов с сечением от 15х10 до 100х100 мм, стыкуемых друг с другом с помощью переходников. Они могут использоваться для разводки кабельных сетей по комнатам и рабочим местам или в качестве магистральных (серии больших сечений) и позиционируются как бюджетное решение с хорошим качеством. В компании считают, что эти типоразмеры практически полностью удовлетворяют требованиям рынка. Изделия других типоразмеров поставляются под заказ. В настоящее время в разработке находятся напольные и плинтусные короба, а также короба размера 100х50, повышенной прочности с возможностью установки нескольких разделительных перегородок. В ассортименте продукции TWT есть настенные розетки для установки модуля Mosaic 45x45, что позволяет использовать любые установочные изделия данного типа. Компанией рассматривается и возможность выпуска цветных коробов серого и коричневых цветов, а также расцветок «под дерево».
С зарубежными поставщиками кабель-каналов конкурируют ведущие российские производители, позиционирующие свои продукты как оптимальные по цене решения европейского качества. Например, в ДКС считают, что ее продукция не уступает решениям Legrand и Marshall Tufflex. В компании анализируют тенденции в электротехнической сфере и стараются соответствовать ожиданиям рынка.
Система INLINER от ДКС специально разработана для применения в составе СКС и позволяет монтировать телекоммуникационные розетки большинства поставщиков. Монтажные коробки устанавливаются простым защелкиванием, а далее без дополнительного крепежа в них размещают — опять-таки путем защелкивания — электроустановочные изделия. Экономия времени достигается и за счет широкого спектра аксессуаров. INLINER предусматривает перфорацию на коробе (его не нужно сверлить) и совместима с другими системами ДКС. По данным производителя, ее эксплуатационные характеристики сохраняются в течение длительного времени, а по цене она дешевле зарубежных аналогов.
В ответ на возрастающие требования рынка ДКС выпустила новую систему пластиковых коробов INLINER Front, разработанную и спроектированную с учетом пожеланий монтажников и российской специфики. Линейки продуктов компании развиваются в направлении улучшения функциональности, сервисного обслуживания, удобства использования и простоты инсталляции (в частности, за счет доработки и предложения дополнительных аксессуаров), снижения себестоимости, в том числе благодаря переводу производства большей части продукции в Россию. Сейчас компания импортирует около 20% изделий (в основном аксессуары).
«Экопласт» разрабатывает свои системные решения совместно с ведущими системными интеграторами и электромонтажными организациями, адаптируя их к условиям инсталляции слаботочной и силовой проводки. Ее серия коробов INSTA производится из российского ПВХ, а устойчивость к выцветанию обеспечивают специальные добавки, поставляемые немецкими партнерами. Кроме того, короба не подвержены горению. В «Экопласт» считают, что созданная модульная система хорошо адаптирована к требованиям российского рынка, где популярны модули 45х45, и отвечает евростандарту с посадочным местом 60 мм. Собирается она подобно конструктору, а монтаж розеток не отнимает много времени. Уже установленные розетки легко дополняются новыми или перемещаются. Система укомплектована различными аксессуарами (также российского производства), а замок позволяет многократно открывать и закрывать короб. Короб допускает размещение до трех внутренних разделителей. К концу этого года завод собирается выпустить два новых типоразмера изделий INSTA для малых офисов и муниципальных учреждений. Все компоненты систем каналов и труб «Экопласт» производятся в России.
[pagebreak]
Для открытой проводки в административных, жилых и промышленных помещениях компания выпускает систему пластиковых магистральных каналов TEC с сечением от 60х40 до 230х60 мм и повышенной ударопрочностью (8 Дж). Конструкция замка крышки выполнена в соответствии с немецким стандартом — в нахлест; фиксацию торцевых сторон обеспечивает кабельная скоба, которая одновременно служит распоркой и позволяет многократно открывать и закрывать короб без деформации крышки. Система TEC разработана для применения главным образом в промышленных помещениях или административных зданиях при прокладке кабелей на большие расстояния.
Системы кабель-каналов компании «Рувинил» белого и коричневого цвета изготавливаются на итальянском оборудовании с полным набором аксессуаров сочетаются с различными сериями розеток, устанавливаемых посредством суппорта. Компания готовится выпустить продукты новых типоразмеров. Производство кабельных каналов двух цветов наладил опытно-экспериментальный завод «Техпласт». Они изготавливается на импортном оборудовании с контролем качества; компоненты исходной смеси, кроме ПВХ, закупаются за рубежом.
МИНИ И МИКРО
Когда электропроводка и кабельная сеть уже смонтированы и нужно организовать еще одно рабочее место, подведя к нему телефонную и информационную сеть, часто используют мини- и микроканалы с откидывающейся или полностью открывающейся крышкой. Они позволяют организовать рабочие места там, куда невозможно подвести большой короб. Широкий выбор типоразмеров и полная гамма аксессуаров помогают подобрать наилучший вариант для конкретного случая. К мини-каналам (мини-коробам) обычно относят короба сечением от 8х10 до 40х60.
Интересное решение — микроканалы на самоклеющейся основе. Такую продукцию, предлагают, в частности, Quintela, MITA, MK Electric, Panduit, Aemsa, Niedax и ряд других компаний. Технологию производства мини-каналов с адгезивной пленкой 3М освоил «Экопласт». ДКС также планирует выпуск мини-каналов 10х10 с возможностью использования самоклеющейся ленты. Они легко и быстро монтируются там, где позволяет поверхность.
Мини-каналы отличаются более широким ассортиментом и могут снабжаться встроенными перегородками, однако название зависит от терминологии производителя. MITA предлагает еще и так называемые короба миди размером 50х30 и 50х50 мм. Кроме мини-коробов для телекоммуникаций и охранных сигнализаций стандартного и суперпрочного типа эта компания выпускает мини-канал-трансформер. Он поставляется в рулоне в виде плоской пластиковой ленты. Она легко прибивается или привинчивается к стене, а затем края отгибаются вверх и закрываются крышкой, образуя мини-короб.
Для компактной укладки кабельной проводки в малых сетях компания AESP предлагает в составе системы SignaMax Trunking System серию компактных односекционных коробов Mini, дополняющих полноразмерные серии Office и Solo. Розетки устанавливаются в наружные подрозетники. MK Electric выпускает мини-каналы серии Ega Mini белого и черного цветов. Электроустановочные изделия монтируются с помощью настенных подрозетников, стыкуемых с мини-коробом через адаптеры. Короба серии Ega Communication разработаны для прокладки кабелей малого диаметра (обычно для телефонии и сигнализации). Legrand выпускает мини-каналы (мини-плинтусы) трех цветов (серый, белый, коричневый); мини-плинтусы DLPlus можно монтировать на уровне пола, по стене или под потолком. Благодаря специальному держателю-мембране провод не выпадает из канала. Panduit производит три серии мини-каналов (LD, LDP и LDS) для слаботочной и силовой проводки, сопрягаемых с коробами T45, T70, TG70, Twin-70 и новой серией потолочных коробов.
Трансформируемые углы для мини-каналов Quintela дают возможность по-разному использовать один и тот же элемент. Например, L-образное соединение заменяет четыре детали, что упрощает подбор аксессуаров: путем нескольких простых манипуляций деталь собирается как элемент конструктора. По данным Quintela, такой подход сокращает время монтажа и стоимость проекта, а также позволяет решить многие проблемы несоответствия первоначального проекта с реальными задачами монтажа. Как и у большинства поставщиков, для стыковки с другими типами коробов имеются переходники и адаптеры. Возможность соединения всех серий коробов и мини-каналов INLINER предусматривает и ДКС. Система INLINER включает девять типоразмеров мини-каналов. У «Экопласт» микро- и мини-каналы для слаботочных сетей имеют отдельную или открывающуюся крышку и основу с отверстиями для крепления к стене. Недорогую серию мини-каналов выпускает предприятие «Электропласт». Это бюджетное решение для не очень сложной сети. Белые и коричневые мини-короба предлагает и «Рувинил».
КОРОБ НЕТРАДИЦИОННОЙ ОРИЕНТАЦИИ
Многие производители кабельных коробов выпускают специальные серии для жилых помещений, частных домов, школ и т. д. Они отличаются высоким качеством изготовления и привлекательным дизайном, отвечающим требованиям интерьера. Такие специализированные короба (плинтусные, карнизные, для установки на рабочий стол и проч.) нередко имеют нетрадиционную форму. Как отмечают в «Сонет Текнолоджис», «нетрадиционные» решения пользуются ограниченным спросом, но имеют свой четко выделенный сегмент. Это, например, крупные банки и офисы компаний, специализирующихся на дорогостоящих товарах и услугах, где престиж и дизайн интерьера играют большую роль.
У компании Efapel данная линейка представлена кабельным плинтусом, коробами для внутренней установки розеток, мини-каналами и напольными коробами. Разнообразные аксессуары позволяют устанавливать любые типы механизмов (розетки, выключатели и т. п. в терминологии компании). MK Electric производит короба-наличники и плинтусные короба Lincoln, а также оригинальные короба треугольного сечения Pinnacle, монтируемые в углах помещений и допускающие окрашивание. Для монтажа в качестве карниза (в стыке между стеной и потолком) MK Electric разработала серию коробов Ega Carnice, совместимых с Ega Mini и Lincoln. Похожая продукция треугольного сечения (DLP 3D 80x80) имеется и у Legrand.
Иногда заказчики предпочитают традиционному пластику короба из стали и алюминия. Они обеспечивают дополнительное экранирование, обладают высокой пожаростойкостью и могут окрашиваться. Например, Niedax выпускает такие офисные короба из стали с конца 70-х. Thorsman дополняет собственную систему пластиковых коробов металлическими (стальными и алюминиевыми) и даже деревянными. Marshall Tufflex, наряду с обширным спектром настенных, плинтусных и потолочных коробов из ПВХ, предлагает деревянные системы для организации кабельных трасс. Так, короб Real Wood Trunking способен удовлетворить самый взыскательный вкус. Он поставляется в прямоугольном (панельном) и плинтусном вариантах с совместимыми электрическими компонентами и изготавливается из дуба, бука, вишни, клена или ореха.
Требования к дизайну изделий заставляют производителей расширять спектр продукции за счет цветных изделий или коробов под окраску. Иногда кабельные каналы, короба или плинтусы выпускают в ограниченной цветовой гамме (двух-трех цветов), а под заказ производят окрашенные. По такому пути пошла компания Quintela.
При всем удобстве открытая проводка в настенных коробах не способствует уюту, поэтому в жилых помещениях нередко используются кабельные плинтусы. Они достаточно функциональны и позволяют организовать рабочие места любой сложности. Кабельный плинтус Quintela, включая цветную серию RODAQUINT для жилых помещений, снабжен перегородками, поставляется с аксессуарами и установочными коробками (такими же, как для мини-каналов). Серию кабельных плинтусов CARLTON выпускает MITA, а ее короба AMBASSADOR производятся в цветном варианте. Legrand предлагает декоративные плинтусы округлого сечения в четырех вариантах цветовой отделки. Трехсекционный короб с выносными розетками от Marshall Tufflex хорошо смотрится в городских квартирах и пригоден для прокладки телекоммуникаций и электрики внутри помещений, а короба Sovereign Plus Skirting Trunking этой же компании устанавливаются вместо плинтуса.
ДКС разработала для открытой проводки в административных и жилых зданиях систему EVOLUTION/ART, исполнение которой отличается особой эстетичностью. Она состоит из пластиковых каналов (настенных, напольных и плинтусных), соединительных и ответвительных аксессуаров, элементов крепления электроустановочных изделий, телефонных и компьютерных розеток и предлагается в трех цветовых решениях. Новую линию плинтусной системы с изменяемыми углами и модульными коробками для офисных помещений и квартир внедряет «Экопласт».
По данным «Остек-Ком», популярность приобретают напольные лючки и сервисные стойки, обладающие удобной функциональностью и привлекательным видом. Лючки и мини-колонны системы FrontLine предлагает, в частности, Thorsman, эту компанию на российском рынке представляет концерн Schneider Electric. Мини-колонны часто используются для организации рабочих мест в открытых интерьерах и больших
Выбрал куски из своей почты, растерзал по привычке синтаксической правкой (солнышки, ну почему вы так не любите русский язык? Что плохого он вам сделал?) и теперь считаю себя вправе включить в очередной FAQ. Рискую лицезреть возникновение необходимости отправить большим дядям из адсенса предложение переделать нафиг их собственный раздел частозадаваемых вопросов.
Как стать Вашим рефералом?
В правой колонке блога есть кнопка "Заработайте деньги на Вашем сайте. Google AdSense". Регистрация - на русском языке. Однако предварительно необходимо создать блог, пригодный для отправки на рассмотрение: зачисление в программу AdSense не происходит автоматически.
С моей же стороны набор требований минимален, то есть вообще нулевой. Даром что я ксенофоб, шовинист и ещё кто-то (кажется, анархист и люблю устраивать теракты в годовщину терактов). От самого реферальства мне ни горячо, ни холодно. Однако среди трудолюбивых и креативных (почему-то слово "творческих" никак сюда не лезет, ибо в последние годы творчеством в инете стали называть такое, что… ладно, не по теме) рефералов я буду подыскивать кандидатов для других проектов, не связанных с адсенсом; основная заповедь интернет-маркетинга гласит: разнообразные источники дохода! Иными словами, чеки должны приходить от разных юридических контор.
Адсенс хорош, но душа требует разнообразия. Опыт, который рефералы приобретут при работе с адсенсом, поможет им в достижении того самого разнообразия в получаемых чеках. Кроме того, пособие в формате .pdf будет доступно рефералам без всякой мзды, причём на русском языке.
Где брать контент для блогов?
Гугл не только всё знает - он многое отдаёт за "спасибо" (намалюйте в подъезде "ихь либе гугл"). К любому запросу добавляйте "free article" или "free articles". Подсказка для трудолюбивых: годные тексты статей, а не рекламная однострочная ботва с ключевыми словами, хорошо ищется по запросам: tips, tricks, advice, tutorial, manual, guide…
Разумеется, думайте головой, прежде чем искать tips по теме "некрофильское порно". Правда, адсенс будет бессилен показать тематические объявления по вышеозначенной теме на вашем блоге, но горячие головы упорно думают, что блоги должны быть непременно с hardcore. А ещё лучше с виагрой. Не буду ударяться в объяснения, чем дорвеи отличаются от адсенса - пусть это сделает кто-нибудь, кто занимается и тем, и другим. Я бы спросил Джоэла Комма, но он, зараза, про дорвеи ни слова не сказал до сих пор.
Пример запроса для поиска контента по ключевому слову Christmas turkey:
christmas turkey "free article"
christmas turkey "free recipes"
Обратите внимание на то, что я использовал слово "рецепты", так как индейка - это всё-таки ритуальная еда, и статьи просто про рождественское мясо писать непопулярно. Берите статьи с третьей страницы выдачи и далее, можно и с первой, но статьи из топа, сами понимаете, наверняка зачитаны до дыр. Те, что с более поздних страниц, имеют больше шансов оказаться малоизвестными потенциальным серферам. То есть статьи им понравятся, и они с радостью пойдут по объявлениям адсенса дальше. Подчёркиваю - с радостью! Ибо опечаленный серфер может с тоски неразделённой сказать гуглу, какую гадость вычитал на вашем блоге, а гугл возьмёт и согласится с печальным серфером… появится ещё один печальный адсенс-публишер. А зачем плодить печаль в миру?
Нужно ли хорошенько проспамить блог для раскрутки и подождать перед тем, как подавать заявку, или же главное - качественный ресурс, неважно, что он новый и пока поисковики о нем не знают?
Я не работаю аппрувером в команде AdSense (чьё-то счастье, хых), но полагаю, что команду link: тамошние мальчики и девочки знают и пользуют. И если заявленый на регистрацию в адсенсе блог имеет тучу входящих линков с виагровых гостевых книг, то тут уже и недалёкий человек догадается, что автор блога - ушлый крендель и уже приготовил лопату для адсенсовских денег.
Проявите свою прыткость в другом. В уникальном (да, я не опечатался) контенте. Не страдайте мозговым плоскостопием или шаблонностью, пишите с размахом и от души! Но чтите грамматику вне зависимости от языка. Поймите, аппрувер читает ВАШ блог, а не один из миллионов. И ваш блог должен ему понравиться. Дизайн может быть на любителя, но текст должен цеплять.
Кстати, не используйте в URL блога какие-либо заведомо денежные ключевые слова. То есть блог с адресом badcreditreport2006.blogspot.com, даже полный уникальных авторских статей (защищённых внешними скриптами собственной разработки для предотвращения считывания ботами), в глазах потенциального апррувера будет сильно походить на творение кренделя, вооружённого даже не лопатой, а бульдозером для сгребания адсенсовских денег.
Блог не должен за версту разить жаждой его обладателя поживиться. Блог - это самовыражение. Плевать, что по выбранной вами теме адсенс не сможет показать релевантные объявления - не это не волнует аппрувера. Его волнует соотношение контента и предполагаемых объявлений - чтобы последних было не в два раза больше, буде они появятся. Его волнует, чтобы контент был читабельным и личностным. Используйте местоимения "я", "мы", рассказывайте истории из своего жизненного опыта, о своих друзьях, об увлечениях - но если вы некрофил, то надейтесь, что ваш некрофильский бог сыщет для вас в команде адсенса аппрувера-некрофила, который проникнется вашим онлайн-дневником и откроет вам аккаунт в AdSense.
Сколько времени уходит на рассмотрение заявки на участие в программе AdSense?
Многие факторы влияют на конечный срок; подайте заявку в конце декабря, и ждите месяца два… А вообще от нескольких дней до нескольких недель. Хочу обратить ваше внимание, что письмо, которое приходит в ваш почтовый ящик сразу же после отправки заявки - не есть аппрув, это всего лишь проверка вашего электронного адреса.
На какую тему создавать блог, чтобы его приняли к регистрации в программе AdSense?
Не стоит высказывать какие-либо требования по ограничению, но среди беспроигрышных упомяну:
* Туризм, путешествия;
* Цифровая фотография (и не только цифровая), советы начинающим, инструкции, описание частых ошибок…;
* Видеосъёмка; свадебщики могут плясать от радости
* Обработка графики и видео; любители Adobe Premiere и Vegas Video тоже могут плясать
* Программирование - на любом языке (или без оного ) ;
* Домашняя выпечка, кулинария, приготовление индейки
* Спорт - велосипеды, спуск на байдарках, дайвинг и всё остальное;
* Психология, помощь в общении, советы по навыкам коммуникации в обществе; это настолько актуально в теперешние времена, что апрувер должен быть полным казлом, чтобы отказать такому блоггеру в регистрации;
* Образование, воспитание; дети - это вообще святое, за детей сам фюрер пасти рвал (правда, только за немецких детей, но зато пасти рвал всем, даже самим немецким детям);
* Семья, отношения; но будьте осторожны! Опишите происходящее в вашей постели - и вы пролетите с адсенсом как фанера над Парижем. С такими текстами вам будет уютнее на стульчик.ру.
* А вот от обсуждения американских политиков, восхваления Ким Чен Ира, насмешек над отцами католической церкви, порицания датских газетчиков - лучше воздержаться. Вы не исправите этот грешный мир. Максиммум, что вы можете сделать - поправить своё материальное положение. Думайте о втором.
* Как можно управлять сотнями блогов двумя кликами мышки? Чтобы само всё делалось, а я типа только раз в месяц отрываю задницу от стула, чтобы отнести чек в банк? Не знаю.
* Нужны ли комментарии в блогах? Стоит ли их создавать в режиме автомата? Смотрите сами; умеете защищаться от ребят с хрумером - вперёд. Я лично этих ребят обоснованно побаиваюсь
* На каком языке создавать блог? Обязателен ли английский? Несколько месяцев назад, до ввода полноценной службы поддержки программы AdSense на русском языке, я бы не рекомендовал пользоваться русским языком. Но теперь, видимо, это не аргумент, тем более, что гугл проявляет растущее внимание к российским вебмастерам. Блог на русском языке, скорее всего, будет оценивать русский аппрувер, наш эмигрант, так что это увеличивает шансы на благожелательное отношение.
С другой стороны, от всего русского принято ожидать подвоха. Думаете, почему так не любят доменную зону .ру? Вот по этой причине, если вы располагаете средствами создания блога на английском языке (допустим, студентка-отличница с филфака МГУ проживает в вашей постели), то используйте английский. Заодно подучите язык.
Можно ли в качестве контента использовать генераторы оного?
Можно. Как сказал вебмастер одной из директорий ссылок, "если вам лень вручную заполнять заявку на размещение ссылки, то мне точно также лень её размещать". Делайте выводы.
Как часто размещать статьи в регистрационном блоге ДО подачи заявки в AdSense? И сколько должно быть статей?
За две недели напишите десять полноценных статей объёмом 500-700 слов каждая. Это покажет аппруверу, что вы - серьёзный сетевой напесатель и программа AdSense от вашего участия сильно выиграет.
Стоит ли для подстраховки создавать несколько регистрационных блогов? Или ограничиться одним?
Если у вас так много прыти, сделайте супер-блог, одного взгляда на который хватит, чтобы апрувер схватился за сердце, выпил карвалола и сказал: "Свершилось! Этот блог создан! И мне выпала честь выдать его автору разрешение на размещение рекламы AdSense! Святые небеса, благодарю вас за то, что я избран для этой великой миссии!"
Отказ в регистрации делает лишённой смысла попытку зарегистрироваться в тот же день заново. Придётся ждать хотя бы пару месяцев.
Как утверждает Joel Comm, адсенс очень благосклонно относится к блогам с сервиса blogger.com, поэтому создавать регистрационный лучше всего там. Собственное же доменное имя не выступает гарантом успешной регистрации.
Резюмируем:
Для повышения процента вероятности успеха регистрации в программе адсенс с первого захода следует:
напрячься и ещё ДО создания блога подумать, на какую тему вы сможете влёгкую накатать десяток статей, заведомо не нарушая условия соглашения, не затрагивая сверхдорогие ключевые слова типа некоторых видов рака; придумать доменное имя, в котором НЕ будут фигурировать дорогие ключевые слова; я использовал свой ник Attente;
избегать использования цифр и всяческих внеалфавитных символов в доменном имени: вариант my_nickname-_2006–_coolguy не прокатит; мыслить широко и интересно для потенциальной аудитории; если вы открыли секрет, как ставить куриные яйца на торец - опишите сей процесс в деталях, с кучей фотографий, интервью с другими "яйцеставильщиками", статьями с других смежных по теме ресурсов - и адсенс-аппрувер будет в отпаде, зуб даю! Сам два часа учился яйца ставить вертикально, пока до меня дошло, как именно это делается;
излагать мысли и переживания реального человека; описывайте жизнь в динамике - ибо аппруверы в своём большинстве мужчины и лучше воспринимают действие, нежели описание;
использовать реальные имена, места, даты, топографические названия, номера частей и дивизий Минобороны за последнее по головке не погладит, но аппрув выдаёт пока что не оно;
размещать фотографии - стопроцентно сделанные любительской камерой (вашей); натыренные снимки из Google Images могут запросто вырыть вам могилку куда глубже шести футов;
указывать в качестве адреса электронной почты что-нибудь цивильное; вероятно, gmail просто идеален хотя признанный лидер бесплатной почты MSN и Hotmail тоже рулит.
В данной статье я бы хотел рассмотреть и сравнить между собой несколько способов раскрутки сайтов. Некоторые способы уже известны многим как быстрый путь к увеличению посещаемости сайта. Посмотрим так ли это на самом деле.
Достижение высоких позиций невозможно только редактируя meta-теги.
В свое время я прочел очень интересную книгу Стефана Ковея "7 привычек успешного человека". Мне в этой книге особенно понравился раздел "Персональная этика". В нем автор упоминает о том, как некоторые люди изо всех сил пытаются найти "быстрый и простой способ достичь успеха в жизни не работая и не совершенствуя свои профессиональные навыки".
Далее автор подводит итог: "Персональная этика - вещь иллюзорная и обманчивая. Вот поэтому пытаться достичь каких-либо значимых целей так просто и быстро так же утопично, как найти Эйфелеву башню на карте Мадрида".
Я думаю, что сказанное выше можно смело применить и к поисковой оптимизации: простых путей нет. Вот поэтому я считаю мифом, что раскрутить сайт можно только путем редактирования meta-тегов.
Почему meta-теги бессильны?
Все дело в том, что толком неизвестно насколько важными являются meta-теги для релевантности сайта. Да и вообще используют ли информацию из них поисковые машины.
Иначе обстоит дело с поиском внутри самого сайта. Вот здесь информация из meta-тегов как раз и помогает найти пользователю страничку на сайте с необходимой информацией. Или, по крайней мере, сузить количество возможных страниц до минимума.
К сожалению, разница между внутренним поиском и поиском с помощью поисковой машины (напр. той же Google) очень велика. Например, с помощью внутреннего поиска можно без проблем найти минимальное количество страничек, которые будут максимально соответствовать поисковому запросу. К тому же содержание сайта (контент) и meta-теги только помогут пользователю добраться до нужной ему информации.
С другой стороны, все главные поисковые машины интернета имеют свои базы данных, которые содержат информацию о всех интернет страничках, о которых они только знают. Они-то не всегда доверяют информации из meta-тегов, так как она запросто может отличаться от истинного содержания сайта. К примеру, вы как владелец сайта, желаете видеть свой сайт на верху результатов поиска по многим ключевым словам (фразам), но поисковик все равно поместит туда наиболее релевантные по данным ключевым словам сайты.
Вот по этой причине только изменять информацию в meta-тегах не приведет к росту рейтинга сайта и увеличению трафика.
И о контенте замолвим мы слово...
Бесспорно, вы можете наполнять свой сайт статьями любого содержания и тематики и надеяться на быстрый эффект. Но вот только написание хороших статей (т.е контента) требует времени и часто довольно много. Можно, конечно, потратить годы на написание статей, что в конечном итоге приведет к появлению довольно весомого архива полезной информации. Вот только у меня возникаю сомнения, что кто-то сможет писать 100 статей в неделю, да еще и интересных и полезных в информационном плане для посетителя. Тут нужно либо нахально воровать контент с других сайтов, либо пользоваться программами для его генерации, либо становиться роботом с множеством рук!
А как же ссылки?
Да, без сомнений, ссылки - это очень важный инструмент, который помогает вашему сайту хотя бы просто быть замеченным (проиндексированным) поисковой машиной. Вот только делается это не так и быстро, ввиду довольно большой инертности поисковиков. Да ведь играет еще и "вес" ссылающегося на вас сайта, а в данном случае лучше получит одну ссылки с сайта с PR=6-7, чем с сотни с PR=2-3. Но пока ваш сайт еще не раскручен, то крупные сайты вряд-ли поставят на ваш сайт ссылки. Зачем это им?
Так что лучше пока забудьте о популярности ссылки и вместо этого подумайте о привлечении на сайт целевой аудитории и как она узнает о существовании вашего сайта. Тут все проще пареной репы, как говорится. У вас есть сайт и вы занимаетесь бизнесом, который [лучше] [уникальнее] [качественнее] чем аналогичный у ваших конкурентов. Вам, естественно, нужно его заставить приносить прибыль. Не обязательно в вас должно быть много денег для рекламы вашего сайта.
Хорошая реклама в (пусть и не в самом популярной) газете, журнале или даже телепрограмме уже поможет обратить внимание на ваш ресурс. Ведь, чем популярнее сайт, тем о нем должны больше говорить. Можно даже использовать PPC (Paid per click, сервис показа баннеров с вашей рекламой с оплатой за клики), который поможет привлечь на ваш сайт заинтересованных посетителей.
Но, как бы вы не рекламировали свой сайт, не рассчитывайте на бум в течении суток.
А теперь снова вернемся к книге Стефана Ковея. Конечно, можно научиться быстро редактировать meta-теги и зарегистрировать сайт в тысячах поисковых машин, поставить свою ссылку на миллионах бесполезных сайтов. Тем не менее, если вы не потратите время на написание хорошего и уникального контента, который будет понятен и интересен посетителю, написан простыми словами без использования сленга, у вас никогда не будет долговременных положительных результатов.
Как достичь долговременных результатов
Одним из способов быстрой раскрутки есть оптимизация сайта под малоиспользуемые ключевые слов. Ваш ресурс-то будет высоко в поисковых рейтингах, да вот толку от этого маловато.
Но так как мы уже решили, что эффективная оптимизация - процесс довольно долгий, то следующие 5 советов помогут вам с пользой это время использовать.
1) Тщательно исследуйте нужные вам ключевые слова с помощью таких сервисов, как Wordtracker или KeywordDiscovery. Пусть эти сервисы и платные, но, как я считаю, чтобы заработать деньги, их нужно сначала потратить. Рано или поздно все к этому приходят. А вот как раз платные сервисы по анализу ключевых слов - совершенный инструмент раскрутки сайта.
2) Не перегружайте свой сайт графикой. Тут есть два недостатка: до сих пор толком неизвестно, как поисковые роботы обрабатывают графику; да и мало у кого из посетителей хватит терпения долго ждать загрузки вашей веб-странички.
3) Используйте понятный посетителю язык, на котором написана информация на сайте. Пусть посетителю будет понятно, что вы желаете ему рассказать. Не забывайте также оптимизировать текст под те ключевые слова, по которым вы желаете достичь высоких позиций в поисковиках.
4) Не лишним будет убедиться, что текст в теге "title" и в описании ссылки полностью сходится с контентом вашего сайта.
5) Будьте терпеливы и настойчивы. Как правило, нужно около 6-9 месяцев, чтобы получить стабильный трафик на ваш сайт с популярных поисковиков. Что поделать, так уж устроены поисковые алгоритмы - им нужно некоторое время, чтобы присмотреться к новым ресурсам. И тут не следует расстраиваться, лучше потратить время на наполнение сайта хорошим контентом.
И помните, что ваши труды по оптимизации - это работа на будущее. Как и все в этой жизни, если вы тратите время и деньги правильно и для конкретной цели, то ожидаемые результаты не заставят себя ждать.
Для получения целевых посетителей на ваш сайт необходимо иметь представление о факторах позиционирования сайта в поисковых результатах определенной поисковой машины. Под позиционированием подразумевается расположение сайта в выдаче по определенному поисковому запросу.
Как показывает статистика, основная часть посетителей переходит по сайтам, расположенным лишь на первой странице результатов выдачи. К тому же большинство из них предпочитают первые два сайта.
Логично, что если ваш сайт будет во второй десятке, то посетителей будет намного меньше. Таким образом, продвижение сайта нацелено на позиционирование сайта именно в первой десятке выдачи, а лучше – пятерке, идеально – тройке.
Рассмотрим наиболее важные факторы, которые влияют на позиционирование сайта.
Первым делом страница сайта, которая попадает в поисковую выдачу, должна соответствовать поисковому запросу. Для этого в ее содержании должны присутствовать слова поискового запроса и соблюдаться их процентное соотношение к остальному тексту.
Но это хоть и важный фактор, но не главный. Ведь можно создать большое количество страниц под определенные фразы. Пусть они даже будут нечитаемые для человека, но для поисковой машины они будут в самый раз.
Поэтому в последнее время все более важным для продвижения сайта является наличие достаточно большого количества ссылок, которые на него ведут. При этом важно, чтобы ссылки были со сходных по тематике ресурсов, не были взаимными и в тексте ссылки были нужные для владельца сайта ключевые слова.
Еще ссылки очень важны для эффективной раскрутки в такой поисковой системе, как Google. Ее алгоритмы оценивают авторитет сайта на основе ссылок на его с других сайтов, авторитет которых тоже очень важен.
Но недостаточно взять и купить, к примеру, 10000 ссылок с ключевым словом "раскрутка сайтов" и быть уверенным, что по этому запросу ваш сайт будет на первом месте и долгое время.
В последнее время поисковые машины совершенствуют свои алгоритмы на предмет неестественных или покупных ссылок. Поэтому быстрый рост их количества может быть расценен как обман поисковой машины и велика вероятность бана. Тогда сайт вообще может быть исключен из поисковой машины.
По этой причине важно выбрать ту организацию по раскрутке и продвижению сайтов, которая сможет провести наращивание входящих ссылок на сайт с гарантией соблюдения правил всех главных поисковых машин.
Обратите внимание на нашу фирму, которая имеет большой опыт раскрутки сайтов, которая имеет большой опыт раскрутки сайтов. На нашем сайте вы можете также прочитать отзывы наших клиентов.
Услуги по предоставлению хостинга бывают следующих видов:
Бесплатный хостинг (Free web hosting service)
Полностью бесплатен для пользователя. Как правило, дается доменное в поддомене хостера, на хостинге часто висит баннерная реклама, которая мешает дизайну, список поддерживаемых технологий ограничен, часто нет поддержки скриптовых языков (php, asp.net и java). Подобный хостинг на большее, чем под домашняя страничка, не подходит.
Виртуальный хостинг (Shared web hosting service)
Ваш веб-сайт находится на том же сервере, как и многие другие сайты, в диапазоне от нескольких до сотен или тысяч. Как правило, все домены могут разделить общий пул серверных ресурсов, таких как память и процессор. Управление работой всех сайтов идет через виртуальные хосты средствами веб-сервера apache.
Реселлеры хостинга (Reseller web hosting)
Когда провайдер хостинга позволяет клиентам стать самостоятельными провайдерами хостинга. Дилеры могут самостоятельно настраивать свой сервер, создавать отдельные домены. Реселлеры затем перепродают свой хостинг по более высокой цене своим клиентам, зарабатывая на разнице. Дилеры могут сильно отличаться по размерам: они могут иметь свои собственные сервера или же арендовать их у хостера.
Аренда части сервера. Отличается от виртуального тем, что каждый пользователь считает, что у него как бы свой собственной выделенный сервер, но он фактически лишь делит его с другими пользователями. Как правило, пользователи имеют доступ к настройкам конфигурации той части сервера, которая ими арендована, также регулировать размеры трафика, количество баз данных, электронных почтовых ящиков и ftp-аккаунтов.
Выделенный сервер (Dedicated hosting service)
Пользователь получает в аренду или ставит свой сервер на площадке хостера. Предоставляется полный контроль над сервером (корневой доступ для Linux / администратора для Windows). Выделенный хостинг делится на самообслуживание клиентов или на обслуживании администраторов хостера (за дополнительную плату). Если пользователь имеет полный административный доступ, то это означает, что он несет ответственность за обеспечение безопасности и поддержание своего сервера.
Управляемые службы хостинга (Managed hosting service)
Пользователь получает свой собственный Web сервер, но не имеет полного контроля над ним (корневой доступ Linux / администратора для Windows). Однако он может управлять своими данными через FTP или другие средства удаленного управления. Пользователям запрещается полный контроль по той причине, что провайдер должен гарантировать качество обслуживания, не позволяя пользователю изменять конфигурацию сервера или создавать потенциально опасных проблем конфигурации. Пользователь, как правило, не владеет сервером, а лишь арендует его.
Колокейшен (Collocation web hosting service)
Предоставляются услуги, аналогичные выделенному серверу, но пользователь владеет размещенным сервером. Хостинговая компания обеспечивает физическое пространство и обеспечивает работоспособность сервера (питание, охрану, защиту от перегрева, пыли и влаги).
Это самый мощный и дорогостоящий вид услуг веб-хостинга. В большинстве случаев колокейшен провайдер почти не оказывает поддержки непосредственно для своих клиентов, а предоставляет только электричество, доступ в Интернет и стойку для сервера.
В большинстве случаев для колокейшена, клиент имеет собственного системного администратора, который может в любое время посещать дата-центр хостера для настройки и конфигурирования сервера (программное обеспечение, замена оборудования сервера).
Протокол обмена управляющими сообщениями ICMP (Internet Control Message Protocol) позволяет маршрутизатору сообщить конечному узлу об ошибках, с которыми машрутизатор столкнулся при передаче какого-либо IP-пакета от данного конечного узла.
Управляющие сообщения ICMP не могут направляться промежуточному маршрутизатору, который участвовал в передаче пакета, с которым возникли проблемы, так как для такой посылки нет адресной информации - пакет несет в себе только адрес источника и адрес назначения, не фиксируя адреса промежуточных маршрутизаторов.
Протокол ICMP - это протокол сообщения об ошибках, а не протокол коррекции ошибок. Конечный узел может предпринять некоторые действия для того, чтобы ошибка больше не возникала, но эти действия протоколом ICMP не регламентируются.
Каждое сообщение протокола ICMP передается по сети внутри пакета IP. Пакеты IP с сообщениями ICMP маршрутизируются точно так же, как и любые другие пакеты, без приоритетов, поэтому они также могут теряться. Кроме того, в загруженной сети они могут вызывать дополнительную загрузку маршрутизаторов. Для того, чтобы не вызывать лавины сообщения об ошибках, потери пакетов IP, переносящие сообщения ICMP об ошибках, не могут порождать новые сообщения ICMP.
Формат сообщений протокола ICMP
Существует несколько типов сообщений ICMP. Каждый тип сообщения имеет свой формат, при этом все они начинаются с общих трех полей: 8-битного целого числа, обозначающего тип сообщения (TYPE), 8-битного поля кода (CODE), который конкретизирует назначение сообщения, и 16-битного поля контрольной суммы (CHECKSUM). Кроме того, сообщение ICMP всегда содержит заголовок и первые 64 бита данных пакета IP, который вызвал ошибку.
Это делается для того, чтобы узел-отправитель смог более точно проанализировать причину ошибки, так как все протоколы прикладного уровня стека TCP/IP содержат наиболее важную информацию для анализа в первых 64 битах своих сообщений.
Поле типа может иметь следующие значения:
Значение | Тип сообщения
0_________Эхо-ответ (Echo Replay)
3_________Узел назначения недостижим (Destination Unreachable)
4_________Подавление источника (Source Quench)
5_________Перенаправление маршрута (Redirect)
8_________Эхо-запрос (Echo Request)
11________Истечение времени дейтаграммы (Time Exceeded for a Datagram)
12________Проблема с параметром пакета (Parameter Problem on a Datagram)
13________Запрос отметки времени (Timestamp Request)
14________Ответ отметки времени (Timestamp Replay)
17________Запрос маски (Address Mask Request)
18________Ответ маски (Address Mask Replay)
Как видно из используемых типов сообщений, протокол ICMP представляет собой некоторое объединение протоколов, решающих свои узкие задачи.
Эхо-протокол
Протокол ICMP предоставляет сетевым администраторам средства для тестирования достижимости узлов сети. Эти средства представляют собой очень простой эхо-протокол, включающий обмен двумя типами сообщений: эхо-запрос и эхо-ответ. Компьютер или маршрутизатор посылают по интерсети эхо-запрос, в котором указывают IP-адрес узла, достижимость которого нужно проверить. Узел, который получает эхо-запрос, формирует и отправляет эхо-ответ и возвращает сообщение узлу - отправителю запроса.
В запросе могут содержаться некоторые данные, которые должны быть возвращены в ответе. Так как эхо-запрос и эхо-ответ передаются по сети внутри IP-пакетов, то их успешная доставка означает нормальное функционирование всей транспортной системы интерсети.
Во многих операционных системах используется утилита ping, которая предназначена для тестирования достижимости узлов. Эта утилита обычно посылает серию эхо-запросов к тестируемому узлу и предоставляет пользователю статистику об утерянных эхо-ответах и среднем времени реакции сети на запросы.
Сообщения о недостижимости узла назначения
Когда маршрутизатор не может передать или доставить IP-пакет, он отсылает узлу, отправившему этот пакет, сообщение "Узел назначения недостижим" (тип сообщения - 3). Это сообщение содержит в поле кода значение, уточняющее причину, по которой пакет не был доставлен. Причина кодируется следующим образом:
Код - | - Причина
0________Сеть недостижима
1________Узел недостижим
2________Протокол недостижим
3________Порт недостижим
4________Требуется фрагментация, а бит DF установлен
5________Ошибка в маршруте, заданном источником
6________Сеть назначения неизвестна
7________Узел назначения неизвестен
8________Узел-источник изолирован
9________Взаимодействие с сетью назначения административно запрещено
10_______Взаимодействие с узлом назначения административно запрещено
11_______Сеть недостижима для заданного класса сервиса
12_______Узел недостижим для заданного класса сервиса
Маршрутизатор, обнаруживший по какой-либо причине, что он не может передать IP-пакет далее по сети, должен отправить ICMP-сообщение узлу-источнику, и только потом отбросить пакет. Кроме причины ошибки, ICMP-сообщение включает также заголовок недоставленного пакета и его первые 64 бита поля данных.
Узел или сеть назначения могут быть недостижимы из-за временной неработоспособности аппаратуры, из-за того, что отправитель указал неверный адрес назначения, а также из-за того, что маршрутизатор не имеет данных о маршруте к сети назначения.
Недостижимость протокола и порта означают отсутствие реализации какого-либо протокола прикладного уровня в узле назначения или же отсутствие открытого порта протоколов UDP или TCP в узле назначения.
Ошибка фрагментации возникает тогда, когда отправитель послал в сеть пакет с признаком DF, запрещающим фрагментацию, а маршрутизатор столкнулся с необходимостью передачи этого пакета в сеть со значением MTU меньшим, чем размер пакета.
Перенаправление маршрута
Маршрутные таблицы у компьютеров обычно являются статическими, так как конфигурируются администратором сети, а у маршрутизаторов - динамическими, формируемыми автоматически с помощью протоколов обмена маршрутной информации. Поэтому с течением времени при изменении топологии сети маршрутные таблицы компьютеров могут устаревать. Кроме того, эти таблицы обычно содержат минимум информации, например, только адреса нескольких маршрутизаторов.
Для корректировки поведения компьютеров маршрутизатор может использовать сообщение протокола ICMP, называемое "Перенаправление маршрута" (Redirect).
Это сообщение посылается в том случае, когда маршрутизатор видит, что компьютер отправляет пакет некоторой сети назначения нерациональным образом, то есть не тому маршрутизатору локальной сети, от которого начинается более короткий маршрут к сети назначения.
Механизм перенаправления протокола ICMP позволяет компьютерам содержать в конфигурационном файле только IP-адреса его локальных маршрутизаторов. С помощью сообщений о перенаправлении маршрутизаторы будут сообщать компьютеру всю необходимую ему информацию о том, какому маршрутизатору следует отправлять пакеты для той или иной сети назначения. То есть маршрутизаторы передадут компьютеру нужную ему часть их таблиц маршрутизации.
В сообщении "Перенаправление маршрута" маршрутизатор помещает IP-адрес маршрутизатора, которым нужно пользоваться в дальнейшем, и заголовок исходного пакета с первыми 64 битами его поля данных. Из заголовка пакета узел узнает, для какой сети необходимо пользоваться указанным маршрутизатором.