Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Въпрос за база данни.
http://mcu-bg.com/mcu_site/viewtopic.php?f=14&t=8024
Страница 1 от 1

Автор:  sv_shady [ Вто Авг 03, 2010 5:18 pm ]
Заглавие:  Въпрос за база данни.

Здравейте, имам следното чудене. Пиша едно приложение, ще работи на сървър, получава картинка, намира разни обекти по нея и почва да сравнява с намерените обекти в други картинки. За сега като обработя картинка правя фаил, в които се помнят намерените обекти. Чудя се дали има смисъл отделните файлове да се заменят с една MySQL база дани, не знам как ще бъде като скорост четенето, как ще се държи въобще като цяло, досега не съм пускал база данни. Файловете ще станат някъде около 20000 броя и всеки от порядъка на 100к, тоест ако е една база данни ще стане мноогоо голяма, но пък 20000 файла, как ще се отрази на сървъра не знам, става въпрос за UNIX машина, а езика е С++. Ще съм много благодарен на всеки коментар и съвет.

Автор:  bobyk [ Вто Авг 03, 2010 6:18 pm ]
Заглавие: 

Май в случая БД ще е по-лошия вариянт, 20000 х 100к = 2ГБ, което в БД ще е още повече, може би двойно и ще е и по-бавно. Дръж в БД каквото искаш, само не и самите картинки.

Автор:  goose [ Вто Авг 03, 2010 7:49 pm ]
Заглавие: 

20000 файла в операционната система е по добре, от 20000 файла в един файл (щото това е mysql-a, той си държи таблиците във файлове) ...
само си направи структура, така че в една папка да нямаш повече от 1024 файла, иначе почват проблемите :-)

Автор:  miro_atc [ Вто Авг 03, 2010 9:13 pm ]
Заглавие: 

Категорично БД!

Не че не може да стане и с файлове, ама като има клещи циганина не си парел пръстите ;-)

Въпросът не е само физическото съхранение, индексиране и т.н. Читавото решение изисква и дублиране/бакъп/клъстъринг/load balancing и куп прочие глупости. Не ти трябва да откриваш топлата вода, просто казваш на местния админ "трябва ми сървър с толкова голяма БД, такава производителност/надеждност и т.н.". Админът да си решава колко машини да пуска, как да ги конфигурира и поддържа.

Също така е добре да не се хващаш да правиш и сървърната част. Дори и да няма HTML, сложи си един истински сървър а твоето С++ приложение го вържи през CGI или друг интерфейс.

Автор:  michev [ Сря Авг 04, 2010 1:39 am ]
Заглавие: 

Цитат:
20000 файла в операционната система е по добре, от 20000 файла в един файл

Зависи от структурата на файла. Ако той е фрагментиран по подходящ начин (до колкото знам някои, ако не всички SQL сървъри го правят), то е много по добре от колкото 20к файла от по 100к в една или няколко папки.
8O
Цитат:
само си направи структура, така че в една папка да нямаш повече от 1024 файла, иначе почват проблемите Smile

Човека каза, че ще ползва *NIX система, а не виндоус :)

Относно въпроса - напълно подкрепям miro_atc

Потърси нещо по бързо от MySQL, ако приложениео ти ще се използва интензивно.

Автор:  woody [ Сря Авг 04, 2010 4:39 am ]
Заглавие: 

Ако файловете няма да ги променяш, направи си един голям файл с всичките и подходящ индекс. После - mmap().

Автор:  goose [ Сря Авг 04, 2010 7:55 am ]
Заглавие: 

michev, точно за юникс система говоря :>
Половината от командите включително и дел не могат да обработят повече от 2048 записа в папка, гърмят със съответната грешка :> Листването на папка с повече от 1024 файла става красиво, мога да ти дам статистика като се докопам до бачкането за няколко версии на лайнукс, фрибсд, аикс и юниксуер, за съжаление едни образи взеха парите навремето по темата (разбирай някой горе си прибра комисионните за тази боза) и се налага да бачкам с така сглобената простотия :-)
Колкото база или не - зависи каква информация пазиш, ако пазиш картинки в базата - определено не можеш да ползваш никаква функционалност от нея, ползваш я само за сторидж без да може да прави каквато и да е обработка :>
П.С. Изключение от горното са някои от скъпите версии на Informix и DB2, те имат включени възможности за обработка на изображения, но силно се съмнявам в случая да са оправдани ценово :>

Автор:  sv_shady [ Сря Авг 04, 2010 10:05 am ]
Заглавие: 

Няма да пазя картинката в базата данни, ами разните неща намерени в картинката.
Цитат:
дублиране/бакъп/клъстъринг/load balancing и куп прочие глупости.

С изброените неща горе, за да ми е мирна главата и да не откривам топлата вода, определено ще пусна една база данни, пък по изискване тя трябва да е MySQL. Мерси за отговорите.

Автор:  michev [ Сря Авг 04, 2010 1:27 pm ]
Заглавие: 

goose, не съм съгласен.
Линукс потребител съм от доста време и не съм забелязвал тези проблеми за които говориш. За да не говоря напразно - направих малък тест:

генерираме си i на брой фала в /tmp/
Цитат:
#include <stdio.h>

int main ()
{
char buffer [L_tmpnam];
int i = 2048;
FILE *fp;

while (i) {
tmpnam (buffer);
fp = fopen(buffer, "w");
fclose(fp);
i--;
}


return 0;
}


Стартирам 2 пъти файла.
Код:
ls -l | grep -v ^l | wc -l
ми дава 4126 файла (все пак има и друг боклук там). Команда ls, минава за под 1 секунда!
Код:
rm file*
, също се изпълнява много бързо и резултата е 4096 изтрити файла.

Прикачени файлове:
temp.png
temp.png [ 165.31 KiB | Прегледано 2457 пъти ]

Автор:  bobyper [ Сря Авг 04, 2010 2:09 pm ]
Заглавие: 

Имаме доста натоварен WEB server на който има папка с над 4300 картинки. Няма проблем със скоростта при теглене на която и да е картинка. До скоро беше fedora а сега е centos

Автор:  plameniv [ Сря Авг 04, 2010 4:47 pm ]
Заглавие: 

bobyper написа:
Имаме доста натоварен WEB server на който има папка с над 4300 картинки. Няма проблем със скоростта при теглене на която и да е картинка. До скоро беше fedora а сега е centos

Бе някой хора сигурно се бъркат с бозавите Win проблеми :wink:

Автор:  goose [ Сря Авг 04, 2010 4:55 pm ]
Заглавие: 

Мдам, изказах се леко прибързано ... днес погледнах как стоят нещата, цент-а се справя прилично, ядове имам под Aix и едно дърто bsd 4.7 (по исторически причини няма начин да бъде ъпдейтнато), на unixware лимита му е 4096, но над 1000 почва да бави жестоко ...

Така че линукса го реабилитирам от моето изказване, и си посипвам главата с пепел за него :>

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/