Vidim da pretežno vlada mišljenje da bi txt bio sporiji od baze, u ovom konkretnom slučaju. Ja opet mislim da bi za neku količinu podataka do 100k reči dobro napisan program sa txt fajlovima ostavio iza sebe bilo koji db engine. Evo, ako je neko u mogućnosti neka nam da podatke (reči), možemo napisati par primera i meriti brzine (mada bi verovatno u oba slučaja pretraga trajala nemerljivo malo, reda milisekundi). Evo malo brojeva za razmišljanje:
- čovek predviđa 10k reči, ako uzmemo rezervu x10 to je 100k reči - ne zaboravite da je rečnik u pitanju i da je poprilično ograničena mogućnost rasta broja podataka, a promene strukture jednostavno nema.
- uzmimo prosečno 15 slova/reč - 1,5M slova
- na nekom modernom računaru to zauzima 0,15 - 0,30% ram-a
- na novijim procesorima, svi podaci hladno staju u keš (cca. 40% keša) :), mada nam tamo i nisu stalno potrebni
- ako podatke prilikom učitavanja sortiramo, posle se traženje reči svodi na max. stotinjak poređenja stringova
Sam db engine, ma koliko da je mali, kad se učita u ram će zauzeti više od ovoga, sama komunikacija na relaciji db<->program je sporija od tih stotinjak poređenja, ako je još između odbc/oledb/ado...uh...
Baza podataka bi bila u redu da se radi o raznorodnim upitima, koji uključuju komplikovaniju logiku, ili o višekorisničkom pristupu podacima, ali za ovako trivijalan program jednostavno ne vidim opravdanje u korišćenju dba, osim eventualno neke embedded varijante - što srki kaže, malo TStringList-a (ili nekog derivata) i problem rešen. S druge strane, lepota zero-configuration klijenta i otvorenost formata je toliko veeelika prednost kad program distribuirate na više računara. Sve ovo imho, naravno.
ss.
When something is hard to do, then it's not worth doing.