Автобиографии - в релационна или нералционна БД?


1

Имам някаква идея за приложение, в което ще трябва да се пазят професионални автобиографии на хора. Обаче все още се двоумя в каква БД да ги държа.

От една страна ... има доста ясна структура на една автобиография. Трите имена, дата и място на раждане, години, всякакви контакти, дори и снимка. Това се вписва в релационна БД идеално.

От друга ... не мога да измисля какво да правя с графите "образование и квалификация", "професионален стаж" и "реализирани проекти". В образованието все още има някакъв шанс да създам някакви реалции - все пак учебните заведения и специалности са някакъв краен брой. Но с професионалния стаж и реализираните проекти... там нещата са практически неизчерпаеми като възможности, и релацията почти винаги ще е 1:1. 

Естествено все още нямам никаква идея какви ще са критериите за търсене и колко ще е голяма базата... :)

Та ще помоля колегите които са се сблъсквали със съхраняването на такъв тип данни към кое са се насочили. SQL или Mongo (или нещо друго).


в Databases от JulianG (5316 точки)


Отговори



0

Нямам никакъв опит с база данни, обаче така като го чета на теб проблема ти е по-скоро в изграждане на схемата и релациите, не толкова до самата база данни. Според мен си си за SQL база данни, тъй като повечето от схемата и връзките ги имаш. Не можеш ли на тези "професионален стаж" и "реализирани проекти" просто да им праснеш един "текст" като коментар, в който да се описват нещата. Или пък можеш да го направиш като енумерация...

Професионален стаж:

- няма професионален стаж

- от 1 до 3 години

- над 3 години

Реализирани проекти: свободен текст + поле за някакъв линк към самия проект...

Де да знам, не става ли така?


от Matrix (2857 точки)


0
Като нямаш опит с бази данни, защо се обаждаш? А да... точки...

от saykor (8845 точки)


1

Защо 1:1?

В едина автобиография ще има много "реализирани проекти" и много "работни места". Даже може да има връзка и 1 "работно място" да има много "реализирани проекти".


от saykor (8845 точки)


0

Това което ме притеснява, е че едва ли в базата данни ще има 2 човека, които са работели на едно и също място. Същото се отнася и до проектите - всеки ще си е работил по някакъв си свой проект, и вероятността двама човека да са работили по едно и също нещо ще е минимална.

Отделно изниква въпроса с правописа на имената на фирмите и на проектите. Един липсващ интервал или запетайка, малки или главни букви ще означават различен запис, дори и да се случи така че двама човека да са работили по едно и също нещо или в една и съща фирма.

Просто се двоумя дали си струва се занимавам с SQL или да натряскам цялата автобиография като един обект в mongo-то.


от JulianG (5316 точки)

0

Принципно ако правиш онлайн магазин 2ма човека никога не могат да имат една и съща поръчка. Поръчките са винаги индивидуални за конкретния човек за дадения продукт. Тук 2ма човека могат да са работили в една и съща фирма, че и дори по един и същи проект. Вероятноста не е малка. Примерно IT компаниите в Русе се броят на пръсти и там всеки ги знае. Скоро една русенска IT компания ми предлагаше да им freelancer-ствам 1 месец и по проекта се оказа, че работи мой приятел. Не е кой знае колко голяма вероятноста, но по-голяма е от 2ма човека да имат една поръчка по простата причина, че тя е индивидуална за всеки. В базата никога няма да свържеш ID-то на дадена поръчка с 2ма човека.

MongoDB е 10 пъти по-бърза база данни от MSSQL. Въпроса в случая не е структурата дали ти трябва да е SQL или noSQL, защото може и по 2та начина да си я направиш. По-скоро е колко потребители очакваш и записи в базата. По-натоварения сайт с повече трафик съответно има повече допитвания до базата за четене, запис, промяна или изтриване. На него ще му трябва по-бързата база данни.

Принципно code first с MSSQL е по-лесен за управление от MongoDB. Ако ползваш repository pattern винаги в бъдеще ще можеш сравнително лесно да преминеш на noSQL. Така, че сега си направи сайта с SQL докато се разрастне да ти тормози базата данни.

Друго важно беше, че MSSQL имаше някакво ограничение на големина на файла. Ако не се лъжа 4GB, 2GB за express. Не е много от значение в момента. Около 500к записа на месец ти трябват в продължение на близо година за да запълниш 2GB. MongoDB е неограничен по място и зависи от харда.

Принципно ако ще си плащаш за базата на някой хостинг MongoDB е по-скъп от mssql.

noSQL е предпочитан тип на база за финансовите среди заради бързината си и неограниченото пространство за записи. Релацийте не са толкова от значение. Те могат да се симулират на 100% дори и в noSQL чрез класовете и логиката в C#.

Притеснението ти за правопис се оправя много лесно с един autocomplete dropdown на KendoUI примерно. Като почне да пише чиляка в полето и от долу ми излизат препоръки според текста. Така вероятността да имаш една компания с 2 различни имена е малка. Всеки като види това дето пише, че може да го избере от листа просто ще го избере и няма да си играе да го дописва по различен начин.

Не забравяй да ползваш кеш за информацията която не се променя често. Примерно за dropdown с държави или градове. Да не ходи всеки път до базата да го попълва при всеки потребител отворил дадената страница. Все пак градовете в дадена държава не се променят често :). Ще си помислиш за друга подобна информация в сайта си която може да се кешира. Това ти пести връзки с базата и така сайта ти работи по-бързо. MSSQL-а е ограничен до XXX брой конекции на секунда и ако са повече остават да се изчакват на опашка. Така при по-голям трафик на сайта може да се лагнат някой посетители.


от saykor (8845 точки)


0

Здравей,

Най-тривиалният и широко използван начин е в базата данни да има поле, което да бъде линк към автобиографията на кандидата - така, както той си я е написал и оформил, в какъвто иска формат. В други полета може да се записват трите имена, ЕГН (от него може да се извлече и възрастта), години стаж - това е.

Някои фирми на сайта си предоставят шаблон за автобиография, който лицето трябва да попълни, включително със снимка. Такъв сайт си спомням, че е този на Овъргаз - ако искаш, погледни там. Те са разбили автобиографията на полета, в които могат да търсят определени думи, но текстът в тях се попълва свободно - за правописни и други грешки си отговаря титулярът. Напомням ти, че това трябва да бъде поле от тип Text (което е до 256 знака и в него може да се търси), а не Memo ( дългото текстово поле, което може само да се чете и разпечатва).

Пожелавам ти успех в работата!


от ellapt (6303 точки)


1

"Напомням ти, че това трябва да бъде поле от тип Text"

Кое поле, че нещо не разбрах? В огромния сайт на Овъргаз малко ми е сложно да намеря за къде говориш.

https://www.freelancer.com/u/saykor.html

Като идеш там също профила е разбит на части.

Resume: съдържа поне за Title, Company TimePeriod From(mm) (yy) To (mm) (yy), Summary. Това са 8 полета само за един запис в базата къде съм работил свързат към профила ми.

Portfolio: други полета + radiobuton-и и можеш да си качиш файл.


от saykor (8845 точки)

0

Става дума за полета, по които се очаква да се извършва търсене.


от ellapt (6303 точки)