zzz : Пишеш бази данни на C++ ?!?? Човеко, ти или си прекален ентусиаст или...
Или...? Всъщност зависи какво разбираш под 'пишеш бази данни'. Някои пишат бази данни, за да могат други да пишат бази данни. Различни елементи от 'хранителната верига'.
Tux : че кой те кара да използваш запис за записите?
опитай се да имплементираш самата БД а не конкретна БД.
може да са списък от колони, примерно.
освен това, не винаги алгоритъм който е добър
за паметта е подходящ и за файлове...
освен това ако не е упражнение по програмиране,
по-добре прочети какво са измислили хората. не
ми се вярва да откриеш нещо революционно :)
Да, наясно съм че абстракция му е майката. Въпроса е че в началото нещата бяха по-скоро "Абе дай да хард-кодна една база че ми трябва за това приложение. После ще му мисля как ще я правя универсална".И сега, когато 'после' вече настъпи, реших да попитам.
Paдo : Не може да не знаеш за това - http://www.sqlite.org/
Да, знам. Понеже се занимавам с малко по-специфично приложение с конкретни изисквания, реших че малка специфична база с ограничени но конкретни възможности, и възможност за разширение би свършила добра работа.Идята е да се спретне проста база, без необходимост от драйвери и рън-тайм-и при С++ клиент, със простичко С- API откъм интерфейсната част (под Уиндоус със __stdcall за евентуален ВБ като клиент) , преносима, с поддръжка на различни заявки и манипулации на записите,малко елементарен SQL , BLOB полета, криптиране и компресия на базата, както и на отделни полета и др.
Veso : Хммм, странна идея. Но би ли ми казал какъв е мотива да да го правиш ?
1. Не искаш да да се обвързваш с конкретна БД и да дистрибутираш
драйверите за нея?
2. Колко записа очакваш приблизително да има в БД ?
3. Какво време за отговор от заявка очакваш ?
4. Колко потребителя ще работят с БД ?
5. Колко често ще се добавят/премахват колони в БД ?
6. Др. мотиви
1.Да, не искам.
2.Не повече от 5000.
3.t < ADO.getQueryTime :)
4.1
5.Зависи от потребителя.
6.Упс...това мотиви ли бяха ? Мдам..мотиви да искаш. Самомотивирането е извора на 'топлата вода ' , където се тълпят ентусиастите с табелки 'Patented'
Veso : Ако трябваше да правя подобно нещо бих разделил всеки файл от БД на 2 части - единия ще съдържа структурата на файла- полета, тип, дължина, а другия ще съдържа самите данни. По този начин избягваш твърдо кодираните структури за всеки файл от БД. Правиш клас, който първо чете структурата на файла и динамично заделя памет за всяко поле.
И според мен, ако не е наложително по добре е данните да не се пазят в двоичен вид, освен, ако не гониш някаква върхова производителност. А и по лесно ще се добавят/премахват колони. Двоичните данни, ако не са много може да съхраняват в др. файл.
Това са предварителни расъждения. Предполагам, че има и по добри идеи.
Ами аз затова имам struct _header{}; който е в началото на двоичния файл на базата, но както се оказа това е недостатъчно, тъй като проблема е в твърдо
кодирания _record.Идята е чрез някакъв механизъм, да го направя 'user-defined'.
GLupo : Виж тази книга ако искаш:
(адрес на "Teach Yourself Database Programming with Visual C++ 6 in 21 days" .pdf) ........
Благодаря, книгата се занимава основно с АДО-та, СОМ-ове ОЛЕ-та и други проприетарни апи-та. Но има и една две глави, които биха били от полза в случая.
|