Здравствуйте, ilyxan, Вы писали:
I>Есть собственно конкретная задача: даны 2 "строки" в одной скажем 1000 слов и она хранится в памяти и эта строка постоянно и полностью меняется, другая хранится в файле и имеет очень большой размер.
I>Нужно произвести МАКСИМАЛЬНО быстрый поиск слов первой строки во второй, то есть найти совпадает ли хоть одно слово из первой строки хотябы с одним словом второй и если да то какое с каким.
I>Таких поисков нужно производить n штук параллельно. Нагрузка очень большая.
I>Это только частный пример.
I>Так как с такой областью как программирование серверов баз данных я ни бум бум, собственно вылезает множество вопросов:
I>как лучше хранить данные в файле? маппить в память? чем и как лучше читать и записывать?? как производить БЫСТРЫЙ поиск??? индексирование??? организацию многопоточности? можно ли организовать быстрый неточный поиск???какие алгоритмы лучше всего??? какие функции под windows лучше использовать?? поддержку unicode?
I>ну ессесно все это с возможность расширения,
I>SQL тут ессесно не нужен
I>Есть ли где почитать?? исходники??? чем проще тем лучше... алгоритмы?
I>Заранее примногоблагодарен
1. не строки видимо тогда, а таблички "слов".. с одной колонкой то есть..
одна <первая_строка> и вторая <вторая_строка>
2. видимо нужно проводить быстро много запросов типа
select * from <вторая_строка> where <вторая_строка>.<слово>=<выбранное_тобой_слово_из_первой_строки>
Результаты таких запросов и так работают очень быстро.. На любых размерах второй строки (сложность n*log(n)) Конечно если проиндексировать вторую строку.. Хотя в принципе можно ручками написать и быстрее (сложность max_length(слово из второй строки))
3. Но тебе видно нужно ишо быстре.. и парелельнее.. Ну чтож.. Ставишь несколько компьютеров с одной и той же БД.. Настраиваешь репликацию с одной БД.. Читаешь запросы (слова первой строки) и раскидываешь их по разным БД, так чтобы равномерно.. ПО для равномерной загрузки скажем нескольких паралельных mysql-серваков в сети найти можно.. Примерно так работают всякие google (запрос паралелится на примерно 1000 mysql машин)..