Необходимо разработать программу для работы с постоянно пополняющейся базой данных. Алгоритм работы программы очень простой: если строка в базе не существует, то добавить её в базу.
Вопрос заключается в том, что база планируется очень большая, порядка миллиона записей и постоянное обращение к ней для проверки существования той или иной строки. База ещё не существует, но планируется, чтобы она была простой по структуре, примерно "ключ-значение"...
Писать буду на C#.
Интересно было бы узнать в каком формате лучше всего хранить БД (XML, JSON и т.д. кроме SQL) и каким алгоритмом поиска воспользоваться, чтобы это дело быстро работало.
Не нравится SQL - пользуйтесь NoSQL, например MongoDB. Там заодно и индексы поддерживаются и всякое такое. Можно организовать и дерево. А можно метрическое пространство по кастомным хешам строк. Это уж как захочется.
xmoonlight: в одном бинарнике файле хранить миллион записей? И при этом минимум каждую секунду в этот файл нужно добавлять новую запись.... что-то этот вариант не очень по-моему
Ну раз не SQL (каковы объективные причины?), то берите любую key-value базу и пишите в неё. Поиск будет идти по ключу целиком или по части?
Вы сейчас описали стандартную задачу для любой нормальной базы данных. Т.е. той, в которой есть индексы. Рассуждать имеет смысл только если вы укажете, насколько часто будут вставляться строки, и какие точно будут выборки.
Причины как бы это не было печально - так сказал заказчик.
Обращение к базе...где-то 3 запроса в секунду. Выборка как я говорил: точное совпадение строки. Если такой строки не существует в базе - добавить её.
Просто проблема в том, что когда база разрастётся до больших размеров, то скорость в любом случае упадёт и хотелось бы, чтобы она не сильно упала.