|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Maksym Shevchenko 2:5020/400 19 Dec 2002 18:11:24 To : Valentin Nechayev Subject : Re: Программирование баз данных DBM... -------------------------------------------------------------------------------- Hello, Valentin! You wrote to Andrew Martovlos <martin@meduniv.lviv.ua> on Wed, 18 Dec 2002 10:37:34 +0000 (UTC): VN> Индекс по фамилии добавить. Сымитировав тем самым работу подложки того VN> же MySQL собственными силами ;)) VN> Сделай, например, жесткую структуру с данными, ключ к ней - recno VN> (с префиксом, например, это будет "R000001", "R000002" и так далее). VN> И ключи индексов (например, "IS Петров" = 1, "IS Семенов" = 2). VN> Hадо искать по фамилии - дописываешь "IS" спереди, делаешь get, VN> получаешь recno записи. Делаешь get от "R" плюс текстового VN> представления recno, получаешь всю запись. VN> VN> Повторяю, что этим ты эмулируешь нижний уровень движка SQL сервера. VN> Стоило ли уходить с него? ;)) VN> А иногда это оправдано (как у меня сейчас). Вот у меня например задача в которой 90% запросов это работа, скажем, по ID и остальные 10% (а то и меньше 95 на 5) это поиск по значению на caseinsensetive совпадение начала строки. Релизовал я сие следующим образом. Есть скажем набор полей User ID, некий Key из набора (FIO, email, birth...) и собственно говоря значение. Для хранения этой лабуды сделано две базы BTREE - первая "UID\xFFKey"->"value" и вторая "Key\xFFUID"->"value". Базы синхронизируются на уровне транзакций, т.е. если мы что-то меняем то меняем в них обоих и в одной транзакции. Есть функция получить map<Key,Value> для данного UID и функция получить set<UID> для тех у кого Value для заданых Key's начинается с заданных символов. Первая функция работает с первой базой, вторая со второй. Как думаю обьяснять не надо. Hе думаю что использование SQL было бы быстрее для данной задачи. ЗЫ just IMHO -- With best regards, Maksym Shevchenko. E-mail: r0land@r0land.kiev.ua --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/213999aa8a70.html, оценка из 5, голосов 10
|