Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Framework для разработки СУБД


Автор: otRock 18.1.2016, 20:51
Появилось желание написать свою СУБД. По сути в этом вопросе не важен её функционал. Должна уметь работать только с кодировкой UTF-8, уметь масштабироваться, работа с датами, геоданными, геометрией - в общем не суть. Существующий аналог на Java не устраивает чрезмерным потреблением памяти. На си++ до этого писал только относительно небольшие GUI-программки используя Qt.. В Qt очень удобно работать с массивами, списками, сетью, строками.. Там всё это хорошо задокументированно и код легко читается. 
Будет ли разумно использовать Qt для создания кроссплатформенной высоконагруженной базы или стоит пойти по другому пути? 
Главная задача оставить производительность не ниже Java и существенно сократить потребление памяти. 
Подразумевается, что условия идеальны: я профи, код будет написан максимально правильно и оптимизировано smile 
Благодарю заранее!

Автор: xvr 19.1.2016, 17:23
Цитата(otRock @  18.1.2016,  20:51 Найти цитируемый пост)
или стоит пойти по другому пути?

Стоит взять готовую, https://www.sqlite.org/например, и не заниматься изобретением велосипедов


Автор: Alexeis 19.1.2016, 18:15
otRock, написать производительный движок чертовски непростая задача. Из всевозможных решений такое решение я бы выбрал последним. Нужно просто взять движок написанный не на java, а на с/с++ и применить для своих целей. На счет Qt, не Qt это вообще вопрос ни о том. Qt использует сторонний компилятор C++, так что наилучший результат будет такой какой позволит сделать компилятор С++ и скорее всего будет ограничиваться естественной кривизной рук разработчика, поэтому по скорости будет уступать большинству известных решений.

Автор: otRock 20.1.2016, 15:54
xvr, спасибо за совет, но мне такое решение не подходит. Задачу поставил, можно сказать, в академических целях, да и совсем не про SQL идёт речь.

Alexeis, благодарю. Понял что Qt совсем тут не нужен, буду делать своими силами.

Автор: Alexeis 21.1.2016, 00:47
Цитата(otRock @  20.1.2016,  16:54 Найти цитируемый пост)
Понял что Qt совсем тут не нужен, буду делать своими силами. 

  Вообще-то, я имел ввиду, что Qt генерит код С++, поэтому скорость работы кода на Qt такая же как у С++. Можно рассуждать о скорости работы отдельных классов, но не Qt в целом. 
Например контейнеров QStringList,QVector и т.д. или сигналов или там QFile, что еще может понадобиться.  

Автор: borisbn 21.1.2016, 18:47
Цитата(otRock @  20.1.2016,  15:54 Найти цитируемый пост)
да и совсем не про SQL идёт речь

хм... а о чём ? Ваша СУБД не собирается обрабатывать SQL-запросы ?

Цитата(otRock @  18.1.2016,  20:51 Найти цитируемый пост)
Будет ли разумно использовать Qt для создания кроссплатформенной высоконагруженной базы или стоит пойти по другому пути? 

Смотря что брать из Qt. Сокеты, например, там достаточно быстрые (если не создавать на каждый запрос новое соединение), а QFile - медленный.

P.S. Я надеюсь, Вы понимаете, что первый вариант "кроссплатформенной высоконагруженной" СУБД, которая будет уметь обрабатывать сетевые подключения от нескольких клиентов, обрабатывать SQL-запросы, вести журнал транзакций, следить за сохранностью данных, и .т.п., будет у Вас готова в лучшем случае через год-полтора-два ? Даже если
Цитата(otRock @  18.1.2016,  20:51 Найти цитируемый пост)
я профи, код будет написан максимально правильно и оптимизировано


Автор: otRock 22.1.2016, 17:42
borisbn, не sql, база не реляционная, да и не совсем база данных.. Скорее смесь бд и поискового движка по документам.. Естественно я понимаю на сколько это масштабная затея, но меня это не останавливает ибо сроков нет и чисто спортивный интерес

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)