На файлах - можно, но нужно знать, как правильно работать с конкурентными/параллельными потоками чтения и записи через файловый дескриптор.
(думаю, что тут можно разобраться)
Далее - про логику работы самой базы.
Алгоритм для файловой БД:
Отсортируйте список перед добавлением так, чтобы самые короткие уникальные сочетания символов - были в самом верху, а длиннее - чуть ниже.
В самом низу списка - максимально повторяющиеся сочетания по одному символу, затем 2-м и т.д., и в конце - по подряд идущим сочетаниям повторяющихся символов.
Создайте биграммные-триграммные кластеры на повторных сочетаниях.
При проверке на дубликат - спускаетесь вглубь по кластерному "дереву" (это и есть индексная карта ваших данных), используя файловое смещение узлов "дерева" (от узла к узлу) и получаете мгновенно вердикт: есть/нет проверяемое сочетание символов (например, уникальное слово или хеш-строка) в базе.