Пример базы данных плоских файлов - PullRequest
6 голосов
/ 09 января 2010

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

Если возможно, было бы неплохо увидеть учебник, в котором был слой данных, в котором использовалась бы простая, настраиваемая база данных плоских файлов. Был бы полезен пример сохранения пользовательских бизнес-объектов в XML с последующей их загрузкой, поскольку XML очень популярен и с ним легко работать.

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

Моя цель - найти решение для хранения простых данных на компьютере пользователя, чтобы им не требовалось устанавливать какое-либо специальное программное обеспечение (например, SQL Server и т. Д.) Для извлечения данных из того места, где они хранятся.

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

Ответы [ 8 ]

4 голосов
/ 09 января 2010

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

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

Как и другие, я настоятельно рекомендую SQLite для этой цели.Существуют привязки для различных платформ, в .NET имеется System.Data.SQLite , который в одном файле является как поставщиком базы данных, так и механизмом.

Два больших преимущества использования SQLite заключаются в том, чтофактическая база данных полностью содержится в одном файле, контролируемом вашим приложением, и поддерживает стандартные команды DDL и DML SQL (например, SELECT, INSERT, UPDATE, DELETE, CREATE DATABASE / TABLE и т. д.).

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

Однако Oracle, MySQL, SQL Server и т. Д. По-прежнему определенно предпочтительнее для многопользовательских приложений (даже небольших приложений), если у вас есть возможность доступа / использования сервера базы данных.

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

На многих компьютерах пользователей может быть установлено многопользовательское приложение с расширенным пользовательским интерфейсом клиента.Центральной базой данных здесь действительно должна быть многопользовательская база данных, такая как MySQL.Но в пользовательском интерфейсе расширенного клиента SQLIte идеально подходит для хранения настроек каждого пользователя или, возможно, для автономной поддержки, когда база данных недоступна.

1 голос
/ 04 сентября 2014

biggy - это то, что я использовал в прошлом. Сохраняется как JSON в плоских файлах, и вы можете найти его на Github

0 голосов
/ 09 января 2010

Я согласен со многими комментариями, предполагающими, что лучше использовать существующее ядро ​​базы данных. Однако, как попытка фактически ответить на вопрос:

  • Чрезвычайно распространенным форматом базы данных плоских файлов является Xbase (файлы обычно с расширениями .dbf). Вы можете поискать в "xbase" и "dbf" и найти много информации и любое количество драйверов. Вы должны быть в состоянии извлечь немало советов и подсказок, если вы действительно заинтересованы.
  • Если вы хотите поиграть с тем, что очень вероятно в вашей системе, вы можете использовать ODBC «Microsoft Text Driver». Если на вашем компьютере есть какие-либо средства доступа к данным Microsoft, скорее всего, у вас есть этот драйвер. Я не знаю точно, но он, вероятно, установлен с MDAC. Этот драйвер будет читать и записывать разделенные запятыми текстовые файлы (среди других форматов).
0 голосов
/ 09 января 2010

Вместо того, чтобы заново изобретать базы данных, почему бы не объединить ваше приложение с простым ядром базы данных? Базы данных бывают разных размеров, не все огромные: -)

Если вы хотите заново изобрести колесо, просмотр исходного кода простых механизмов баз данных с открытым исходным кодом должен указать вам правильное направление.

0 голосов
/ 09 января 2010

В Perl есть модуль DBD :: CSV , который может загружать CSV-файлы и запрашивать их с помощью операторов SQL. Но для вашей цели, я думаю, вам лучше изучить SQLite , которая является правильной реляционной базой данных, которая работает без сервера.

0 голосов
/ 09 января 2010

Доступно несколько встроенных баз данных, о которых вашему пользователю вообще не придется беспокоиться.

SQLLite является распространенным, популярным, кроссплатформенным и т. Д. Зависит от вашего языка реализации. Если вы используете Java, их несколько, например, Derby. .NET - не мой бальвик, но я думаю, что там что-то есть. Как минимум, MS имеет свободно используемый рабочий стол, встраиваемый SQL-движок, который вы можете использовать.

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

0 голосов
/ 09 января 2010

Ты можешь взять свой торт и съесть его тоже:

SQLite - это база данных SQL, которая состоит из одного файла и не требует установки, имеет привязки для многих языков и работает на различных платформах.

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

0 голосов
/ 09 января 2010

Текстовые форматы, такие как CSV , INI , XML , могут использоваться для хранения структурированных данных, но IMO не являются гибкими или эффективными для использования в качестве баз данных .

Я рекомендую SQLite в качестве отличной альтернативы. Это очень мощный, легкий и автономный движок базы данных.

...