Что такое плоский файл?

Это простой текстовый файл или двоичный файл или только файл с символами? Может ли кто-нибудь объяснить, что на самом деле означает плоский файл?

4 Solutions collect form web for “Что такое плоский файл?”

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

Плоские файловые базы данных

В контексте баз данных плоская база данных файлов удовлетворяет следующим требованиям:

  • Это база данных, которая содержит ровно одну таблицу в одном файле.
  • В таблице нет индексов.
  • Структура не является реляционной, иерархической или сетевой.
  • Файл может содержать записи фиксированной длины с полями, обозначенными позициями столбцов, или записями переменной длины, причем записи и поля отделены друг от друга символами-разделителями.

В обсуждении этого вопроса могут встречаться такие термины, как метод базового последовательного доступа (BSAM) и метод последовательного доступа в очереди (QSAM). Это относится к тому, как можно получить доступ к базам данных с плоскими файлами. Нужно читать и писать их линейно и последовательно, потому что концепция не требует сортировки записей или даже для ввода ключей.

Вставки и удаления включают обработку всего файла. Плоские файловые базы данных, обычно используемые на носителях, которые хорошо подходят для последовательного доступа, такие как магнитная лента и обновления баз данных, иногда принимают форму чтения из входных лент A и B и слияния с выходной лентой C. (Например: A может быть основным файлом к ​​началу сегодняшнего дня, B может быть сегодняшними транзакциями, а C будет основным файлом на сегодняшний день для завтрашнего запуска.)

Ежедневные плоские файловые базы данных

Вы можете подумать, что больше не сталкиваетесь с такими вещами или, по крайней мере, не сталкиваетесь с ними в Unix и Linux. Ты тоже ошибаешься. Вот некоторые плоские файловые базы данных, с которыми вы сталкиваетесь ежедневно :

  • База данных учетных записей пользователей в Linux представляет собой набор плоских файлов.
    • Файл версии 7 /etc/passwd представляет собой единую таблицу с записями переменной длины, символом двоеточия в качестве разделителя полей и линией перевода в качестве разделителя записей.
    • Также есть /etc/group , /etc/shadow и /etc/gshadow .
  • Файл /etc/fstab – это отдельная таблица с записями переменной длины, символами пробела без строки и разделителем строк и разделителем строк. Таблица файловой системы – это имя.
    • Так же есть /etc/services , /etc/crontab , /etc/phones , /etc/ttys , /etc/hosts и /etc/protocols .
  • Базы входа ( /run/utmp и /var/log/wtmp в Linux; /run/utx.active , /var/log/utx.lastlogin и /var/log/utx.log для FreeBSD и др.) плоские файловые базы данных с фиксированными записями длины, поля и разделители записей, а также поля, обозначенные позицией столбца.

Возможно, вы думаете, что вы не читаете весь файл и не перезаписываете весь файл обратно, чтобы выполнять вставки и удаления записей в вышеупомянутых базах данных переменной длины. Вы перемещаете курсор и выполняете операции удаления строки и ввода. Но вы не замечаете, что весь ввод / вывод файлов – это именно то, что на самом деле делает ваш текстовый редактор, когда он загружает и сохраняет файл . Фактический метод доступа к самому файлу – это плоская файловая база данных.

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

Эти плоские файловые базы данных являются примерами плохих свойств плоских файловых баз данных, когда требуется нечто иное, чем последовательный доступ. Поиск хоста в /etc/hosts или учетная запись пользователя в /etc/passwd включает чтение файла последовательно. Нет индекса, и записи не сортируются по порядку ключа, который используется для поиска. Посмотрите на подпрограммы библиотеки C, используемые для поиска этих плоских файловых баз данных (таких как gethostent() , getpwent() , getfsent() , getgrent() и getutxent() ), и, за исключением того, что мы получим только мгновение, вы увидите методы последовательного доступа. (Различные getXbyY() строятся поверх них. Они просто вызывают процедуры последовательного доступа до тех пор, пока совпадение не будет найдено, вы найдете.)

Следовательно, в BSD фактические базы данных учетных записей пользователей не являются плоскими файловыми базами. Это файлы Berkeley DB, индексированные по UID и по имени пользователя. Они скомпилированы из плоской базы данных файлов, которая хранится в /etc/master.passwd , программой pwd_mkdb . Библиотека C фактически читает /etc/pwd.db или (если может) /etc/spwd.db .

База исходных файлов базы данных BSD «возможности», которую вы найдете в /etc/gettytab , /etc/login.conf и /etc/termcap , на самом деле не является плоским файлом. (Скомпилированная файловая структура, найденная в /etc/login.conf.db и /etc/termcap.db , наиболее определенно не /etc/termcap.db .) Записи могут включать в себя другие записи по ссылке, формируя цепочки, которые необходимо соблюдать, чтобы найти все полей для данной записи. Действительно, компилятор cap_mkdb делает именно это.

Плоские файлы не являются "ASCII-текстом"

ASCII определяет конкретные управляющие символы для разделителей файлов, групп, записей и единиц (т.е. полей). В основном они не используются в Unices и Linux в пользу символов, таких как пространство, TAB , LF и двоеточие.

Люди иногда утверждают, что «плоские файловые базы данных содержат простой ASCII-текст». Как следует из некоторых из приведенных выше примеров, это не так. Это относится только к одному конкретному типичному файлу с плоскими файлами с переменной длиной записи. Однако широко распространенная база данных входа в вашу систему Unix или Linux также представляет собой плоскую базу данных файлов, но там, где различные поля наиболее точно не интерпретируются как кодировки символов ASCII.

(И из более широкого мира, когда кто-то отбросил идею туннеля Unix / Linux: это заблуждение, которому помог тот факт, что xBase хранит содержимое поля, закодированное в ASCII в файлах dbf . Люди говорили о xBase, когда-то рекламировались как самая популярная система баз данных в мире, как система «плоских файлов», хотя они действительно использовали термин в оппозиции к «реляционным» или «объектно-ориентированным» и неправильно использовали его так, чтобы люди злоупотребляли «наследием», для «старых». Таким образом, «плоские файловые» системы «использовали ASCII», но это было даже не так. В файлах dbf было довольно много материала, который, опять же, определенно не интерпретировался как кодировка символов ASCII.)

дальнейшее чтение

  • Дональд К. Берлсон (1998). Внутри объектной модели базы данных . CRC Press. ISBN 9780849318078.
  • Роб Mattison (1998). Понимание систем управления базами данных . McGraw-Hill. ISBN 9780070499997.

В стандарте POSIX для Unix нет такого понятия, как «плоский файл», кроме одного упоминания об этом:

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

В моей работе (биоинформатика) «плоский файл» обычно представляет собой текстовый ASCII-файл, содержащий данные, обычно геномные данные в формате Fasta (или в одном из производных форматов).

Это противоречит данным, хранящимся в базе данных, или в файле, отличном от ASCII (например, в файлах в формате BAM или CRAM), хотя некоторые файлы, отличные от ASCII, также называются «плоскими файлами».

Википедическое определение «плоского файла», о котором упоминается @ikkachu, здесь не совсем уместно, так как геномные данные часто бывают в огромных количествах. Чтение всей ДНК-последовательности вида из плоского файла в ОЗУ может быть как медленным, ненужным, так и во многих случаях невозможным.

Биоинформатики также, по-видимому, используют термин «плоский файл» свободно для любого типа файлов данных, которые они используют, даже если файл данных структурирован таким образом, что его записи могут содержать ссылки в файле, как это может иметь место в GTF / GFF и GeneBank, например.

Возможно, наиболее общим определением «плоского файла» является файл, содержащий данные, которые требуют, чтобы весь файл был переписан, если необходимо внести изменения в данные . Я считаю, что это также касается некоторых двоичных форматов.

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

В общем, это означает что-то с небольшой структурой и полезно само по себе (без необходимых индексов и т. Д.), Но оттуда определения расходятся:

FOLDOC определяет плоский файл как нечто, содержащее (ASCII) текст, по-видимому, в отличие от двоичных данных. Определение (unsource) в Википедии кажется «тем, что нужно читать и записывать в / из памяти целиком», в отличие от того, что может быть обновлено путем изменения только соответствующих частей. Обычный текстовый файл соответствовал бы этому определению, так как строки имеют переменную длину и сохраняются в обратном порядке, поэтому большинство изменений изменят позиции следующих файлов.

Текстовый дамп базы данных будет считаться «плоским файлом» для меня, но я не уверен в двоичном файле. YMMV.

Совместная технология баз данных – плоские файлы для хранения данных, работающие в тандеме с файлами SDLM Perl с парами ключ / значение, привязанными к хеш-таблицам программ, для постоянного индексирования случайного доступа к смещениям фиксированной длины (в байтах). Это реализация системы баз данных ISAM / NoSql. СМ.: http://www.perlmonks.org/?node_id=1121222

Плоские файловые базы данных «текстовых» данных, хранящихся в фиксированных записях, могут быть настроены для мгновенного случайного доступа, используя бинарные файлы SDBM пар ключ / значение, привязанных к таблицам программ Hash, где «значение» – это смещение записи в байтах до позиционируйте указатель файла и где ключ: одно поле, частичное поле или несколько отдельных и / или частичных полей, объединенных вместе, из данных, содержащихся в файлах плоского файла.

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

Вы можете настроить несколько индексов файлов SDBM на свои плоские файлы, каждый файл SDBM, содержащий другой набор пар ключ / значение, на основе того, какие поля или частичные поля составляют «ключ». Индексы ALTERNATE с DUPLICATES могут быть использованы путем добавления последовательности nbr к «ключу».

Можно использовать отдельный плоский файл, который содержит несколько записей CHILD относительно каждой записи PARENT, хранящейся в другом плоском файле. Пример: Плоский файл LOAN (родительский) и плоский файл COLLATERAL (ДЕТИ), где дети – все это залог, обеспечивающий получение каждого конкретного кредита на рассрочку.

Я использую FLAT FILES по 4GIG каждый, а файлы SDBM – по 2 GIG.

Данные могут быть логически разделены для удобства как случайного, так и последовательного доступа. Пример: US_Census_2010_TX_A.dat может быть плоским файлом, в котором хранятся данные только для жителей Техаса, чья фамилия начинается с буквы «A». У вас может быть 50 подкаталогов STATE, содержащих по 26 плоских файлов каждый (один для AZ). Пакетное приложение или пользовательский интерфейс могут получить доступ к правильному файлу, понимая соглашение об именовании файлов Flat File и SDBM.

ПРИМЕЧАНИЕ. Аналогичную технику можно использовать для создания огромной базы данных MS-ACCESS (фактически MS-Jet «Red» Engine), доступ к которой осуществляется через ODBC, так что каждый файл * .MDB содержит только один или несколько внутренних табличных объектов и каждый файл MDB действует как единая таблица, группа таблиц или частичная таблица, общая для всех файлов MDB. Файлы MDB сами по себе не являются базой данных – как это обычно бывает. Они представляют собой просто контейнеры для хранения огромных объемов данных, логически разделенных и индексированных, для оптимизации последовательного и произвольного доступа. MS-Access имеет свои собственные возможности индексирования, поэтому SDBM не будет использоваться здесь для индексирования. Программное обеспечение MS-Access не требуется, так как утилита MDAC и ODBC Administrator поставляется на заводе-изготовителе в Windows 7. Используйте ODBC Administrator для создания файлов MDB MDpy и используйте язык программирования для выпуска операторов SQL, которые строят таблицы и индексы для этих таблиц ,

Linux и Unix - лучшая ОС в мире.