Я хочу создать настольное приложение с функциями поиска, подобными базе данных, но без базы данных SQL
Я знаю основы SQL, а SQL - это все, что я знаю, когда дело касается хранения и извлечения данных. Я хочу создать 1 .exe, и он должен содержать все ~100000 пар ключ-значение (у меня есть данные в файлах.txt) и, возможно, дополнительный атрибут для описания (это я бы добавил сам - как примечание для себя).
Я также хотел бы написать это на новом языке, которого я еще не знаю; например, python или C# (я создал настольные приложения, написанные на Java и VB.net, все с базами данных SQL). Так что язык не будет проблемой, и я буду признателен за предложения.
Эти пары "ключ-значение" могут не нуждаться в обновлении, и я готов перекомпилировать / переупаковать код, чтобы внести одно изменение в данные. Ключ состоит из 6 букв и 2 цифр в конце, напримерhxnaaa01
. Каждая из этих букв представляет или описывает что-то о себе, поэтому мне также нужно будет искать конкретную букву в определенной позиции, чтобы получить именно то, что мне нужно.
Я знаю, что регулярное выражение будет хорошо работать с тем, что мне нужно, но все, что я упомянул, это все, что я знаю. Я недостаточно знаю и не знаю, какие ключевые слова использовать в Google.
Я читал об XML и CSV. Я действительно не знаю, что это такое, и не уверен, как все это поместится в 1 исполняемый файл.
Подводя итог, мне нужно:
- 1 исполняемый файл (настольное приложение Windows)
- Функция поиска ~100k KVP+ еще один атрибут (с использованием регулярного выражения?)
- нет базы данных
- с графическим интерфейсом
- возможность добавить "заметку" к каждому KVP
- должен быть быстрым и легким
1 ответ
1 исполняемый файл (приложение для Windows), без базы данных
Для сохранения данных потребуются дополнительные файлы или база данных. Это в значительной степени неизбежно, вы можете хранить данные в памяти, но они сохраняются только до тех пор, пока они находятся там.
У вас есть еще одно требование: "быстрый и легкий".
Чтобы выполнить это требование, вам нужно серьезно подумать о своем решении, о том, какие технологии вы используете и как вы можете улучшить его в будущем.
Хотя поиск данных довольно тривиален, эффективное решение - нет. Это требует предварительного исследования алгоритмов, структур данных и общих практик. (которая сама по себе является кроличьей норой).
В случае JSON [1] вам нужно будет создать дополнительный файл, содержащий все ваши пары ключ / значение, вы можете использовать C# для создания дополнительного файла (например, при первом запуске).
Я склонен согласиться с тем, что JSON обещает быть легким, а некоторые - нет. Имея дело с файловой системой, я думаю, можно согласиться, что это далеко не легкое решение.
Однако JSON очень читаем:
{
"key": "value",
"comment": "oh this is cool"
}
Есть много факторов, которые влияют на то, чтобы что-то было быстрым и легким, поэтому с вашей стороны необходимо провести некоторое исследование.
Честно говоря, в зависимости от вашего опыта, я бы не стал так сильно сосредотачиваться на быстром, я бы сосредоточился больше на его работе, а затем реорганизовал бы это во что-то быстрое, если оно слишком медленное. [2]
И снова, в зависимости от вашего опыта, я бы продолжал открывать файл, используя цикл for/, чтобы найти свой ключ и что-то сделать с найденными данными, плюс вознаграждать себя за то, что у меня что-то работает.
TL;DR: вам нужен либо файл, либо база данных для действительно постоянного хранения, JSON или удаленно размещенный MySQL будет работать. Старайтесь не зацикливаться на быстром, пока не получите что-то, что работает.