2013-07-23 2 views
0

Я создаю приложение на C#, которое будет использовать «базы данных», но я хочу иметь доступ к содержимому «базы данных»/файла в виде многие языки программирования. «База данных» в основном должна быть похожа на словарь (это не одно), так как word=meaning, и я не против слишком многого, если пользователь может открыто его редактировать.Хранить информацию универсальным способом, чтобы пользователи не могли ее редактировать

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

Есть ли у вас какие-либо предложения относительно того, как я могу хранить эту информацию? Я думал о XML, потому что я мог бы просто использовать уникальный ключ, но я не думаю, что он был бы подходящим для части word=meaning.

+1

Рассматривали ли вы использование фактической «базы данных»? –

+0

Что относительно ... emmm ... фактической базы данных? –

+2

«но я не думаю, что это было бы подходящим для слова = значение части». - почему ты так думаешь? ' [...]' – Corak

ответ

2

Ну, есть много вариантов. Вы можете использовать традиционную базу данных и ограничить права пользователя. Таким образом, пользователи ничего не могут редактировать (или могут выполнять только разрешения, предоставленные вами). Если это необходимо для развертывания с вашим приложением, вы можете использовать компактный БД, например Sqlite или SQL Server Compact. Существуют способы шифрования всего файла БД или защиты их паролем, чтобы пользователи не могли их редактировать. Sqlite имеет провайдеры для многих языков.

Вы можете попробовать нетрадиционную базу данных, такую ​​как MongoDB или db4objects. Последний использует тип двоичной сериализации, чтобы вы могли сохранять свои объекты кода на диск. Опять же, это не так легко редактировать. Вы можете просто сохранить свою коллекцию. С первым вы будете ближе к своей цели пары ключ = значение, потому что вам не нужно иметь определенную схему для любого из этих параметров.

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

+0

Хммм ... Что касается традиционной опции базы данных, даже если я ограничу привилегии, файл не может быть открыт чем-то вроде Notepad ++ и просто изменить запросы, например, с файлами '.sql'? Я действительно не уверен в шифровании, хотя, поскольку в конце дня нет секретов там, кроме тех, которые можно хэшировать, и кажется, что большинство более крупных программ просто используют XML или что-то подобное. Было бы плохой идеей изменить расширение '.xml ', хотя, даже если это еще файл XML? – Andy

+1

Нет, базы данных не сохраняются в текстовом формате. Файлы .SQL, о которых вы думаете, являются сохраненными запросами, а не самими файлами базы данных. Запросы представляют собой текст, но сами данные хранятся в двоичном представлении. Что касается остальных, многие из этих «более крупных программ» используют XML для таких вещей, как конфигурация. Если вы хотите иметь возможность редактировать свои данные вручную, XML - неплохая идея. Расширения не имеют значения для вашей программы, но любой пользователь может открыть любой файл с любой программой. Поэтому изменение расширения файла не является безопасностью. Использование соответствующей базы данных. –

+0

Большое спасибо за это разъяснение. В этом случае, если бы я только откладывал редактирование данных, мне даже не нужно было бы шифровать базу данных, особенно если бы я хэшировал все, что мог. Однако знаете ли вы, можете ли вы шифровать базы данных SQLite на C# .NET? – Andy