2010-07-23 2 views
2

Поскольку я работаю над системой управления сотрудниками, у меня есть две таблицы (например) в базе данных, как показано ниже.Хранить данные в файловой системе, а не в базе данных SQL или Oracle

EmployeeMaster (DB структура таблицы)

КодСотрудника (ПК) | EmployeeName | Город

MonthMaster (DB структура таблицы)

Месяц | Год | EmployeeID (FK) | PrenentDays | BasicSalary

Теперь мой вопрос: я хочу хранить данные в файловой системе, а не хранить данные в SQL или ORACLE.

Я хочу, чтобы мои данные хранятся в файловой системе для вставки, редактирования и удаления opration с сохранением отношения к объектам.

Я разработчик C#, может быть, у кого-нибудь есть мысли или идеи. (Для хранения данных в файловой системе с сохранением отношений между ними)

Заранее спасибо.

Любые идеи по этому поводу?

+0

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

+1

Очевидный вопрос: зачем вы это делаете? Вы просто закончите тем, что изобретаете (плохо) базу данных. –

ответ

1

Перед тем, как погрузиться в создание системы баз данных, вам обязательно нужно знать внутреннюю работу, как действительно работают реляционные базы данных.Существует несколько способов организовать сериализацию ваших данных, будь то типичная сериализация как dbo в целом, или решение mysql для сериализации файла базы данных и таблиц в отдельных файлах для извлечения. Хотя способ mysql показывает, какие таблицы связаны в объекте базы данных, серверу не нужно загружать весь dbo сразу, но в соответствии с тем, какие таблицы (-ы) запрашивают запросы (-ы) в sql, что делает кеш таблицы меньше и быстрее. Я склонен согласиться.

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

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

+0

Роб, спасибо вашему ответу. На самом деле, если вы помните 10 лет назад, многие бизнес-приложения (например, Accounting, Banks) были разработаны на C или C++ с хранилищем файловой системы. Я разрабатываю небольшое приложение winform с C# и .Net. Здесь я хочу использовать файловую систему в качестве хранилища. Не могли бы вы сообщить мне, как я могу сделать это с помощью файла IO в .Net? Продукт, который я разрабатываю, НЕ TOO BIG, а приложение для малого бизнеса, где пользователь может работать в нескольких компаниях, создавая компанию. [Я могу сделать это с помощью простой базы данных MS Access, создав другой файл MDB для каждой компании! но я не хочу MDB] – nunu

3

Если вы хотите выполнять операции EDIT/DELETE, не делайте этого. Вы только закончите воссоздать базу данных с нуля, так что вы можете просто использовать ее. Если вы не захотите использовать SQLServer или Oracle, используйте mysql, postgresql или любую другую базу данных в памяти (persist-to-disk) там. Если вам нужны поддерживаемые для чтения или простые/текстовые файлы данных, то по-прежнему используйте базу данных в памяти и сохраняйте как .csv при сохранении на диске.

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

Вы также можете эффективно использовать файловую систему, если используете один файл на запись, а ваши операции ограничены MAP/INSERT/DELETE/REPLACE; и никогда не пытайтесь ОБНОВИТЬ. Но опять же, если мне нужно делать обновления или корреляции или любой другой интересный запрос, я использую базу данных.

Наконец, вы можете использовать файловую систему, если ваши операции DUMP/RESTORE из массивов данных памяти в один файл. В этом случае вы должны использовать любую стандартную библиотеку сохранения XML для своей платформы и просто выполнять RESTORE при запуске приложения и DUMP при выходе или периодическом сохранении. В значительной степени, как только вы переходите к нескольким файлам, вы снова должны искать базу данных и ORM.

В конечном счете, если вы не имеете дело с очень небольшим количеством данных; или вы имеете дело с большим объемом данных (не менее 100 миллионов миллионов записей), придерживайтесь базы данных.

2

Вы можете использовать SQLite, который в основном представляет собой «облегченную» СУБД, размещенную как DLL в вашем процессе.
Это будет хорошо работать для вас, если формат данных не должен быть удобочитаемым человеком, и если одновременный доступ к данным (несколькими процессами одновременно) не требуется.

Смежные вопросы