Autor Téma: "Databáze bez databáze" :-[)  (Přečteno 1034 krát)

Jakub Kriebel

  • Host
"Databáze bez databáze" :-[)
« kdy: 26-03-2008, 21:55:00 »
Ahoj,
resim takovy maly problem. Mam napsany program, ktery je jakymsi adresarem s kontakty lidi. V puvodni verzi (stare asi 3 roky) jsem to resil tak, ze kazdy clovek byl zapisovan do zvlastniho textoveho souboru, ktery jsem ukladal do adresare. Ovsem casem se tech souboru nahromadily desitky a to se mi prave moc nelibi (ze mam adresar o jednom exe souboru a slozce, kde je 100 textovych dokumentu).
Mam Delphi 7 Personal, coz znamena ze v ni neni databaze, tudiz nemuzu resit tento problem pres ni. Proto hledam zpusob jak tyto informace vlozit do jednoho jedineho souboru s tim, ze by se tam kdykoliv mohly pridavat dalsi jmena s dalsimi informacemi o lidech a kdykoliv by se mohla editovat.
Defacto potrebuji vytvorit jakousi databazi bez pouziti databazovych komponent.
Vite o nejake komponente ci zpusobu?
Diky moc
JK

JanFiala

  • Host
"Databáze bez databáze" :-[)
« Odpověď #1 kdy: 26-03-2008, 21:58:00 »
Podivej se na SQLLite. Existuje interface, ktery komunikuje pres StringListy, takze podporu datanazi nepotrebujes a budes mit SQL server

Mi.Chal

  • Host
"Databáze bez databáze" :-[)
« Odpověď #2 kdy: 26-03-2008, 22:04:00 »
JanFiala Napsal:
-------------------------------------------------------
> Podivej se na SQLLite. Existuje interface, ktery
> komunikuje pres StringListy, takze podporu
> datanazi nepotrebujes a budes mit SQL server

nebo misto ty personal verze pouzit ty Turbo edice, jsou i zdarma a pripojeni na db v tom funguje taky


inetMark

  • Host
"Databáze bez databáze" :-[)
« Odpověď #3 kdy: 27-03-2008, 01:33:59 »
Pouzi SQLite.
http://www.itwriting.com/sqlitesimple.php (jednoducha praca-su to unity)

http://zeos.firmos.at/ (su to komponenty a nie len pre SQLite)

ng

  • Host
"Databáze bez databáze" :-[)
« Odpověď #4 kdy: 27-03-2008, 09:00:00 »
inetMark Napsal:

> http://zeos.firmos.at/ (su to komponenty a nie len
> pre SQLite)

ZEOS s D7 personal nelze, protoze neobsahuje dataset

###

Ale jestli nepouzival frames, tak je asi spravna volba prejit na Turbo Delphi Explorer, jak radil Mi.chal, a ten dataset ma.


Semi

  • Host
"Databáze bez databáze" :-[)
« Odpověď #5 kdy: 27-03-2008, 12:00:00 »
Dokud mas polozek radove stovky (do par tisic), tak se da jednoduse pouzit:

- format INI (TMemIniFile)
- format XML (komponent je dost)

Do INI, kdyz potrebujes dostat viceradkovy text do jedne hodnoty, lze pouzit budto zamenu odradkovani treba za znak |, nebo toto:
Kód: [Vybrat]
LineCount=3
Line0=Text radky 1
Line1=Text radky 2
Line2=Text radky 3

Jinak treba na INI o velikosti megabajtu mam radsi svoje komponenty, ktere jsou o neco rychlejsi oproti standardnimu TMemIniFile.
Format XML pouzivam treba na katalogy disku, to jsou strukturovane XML soubory o radove desitkach megabajt...

---------------------------------
Vyhoda textovych formatu oproti binarnim zaznamum je, ze jsou jednoduse rozsiritelne. Napr. az za rok pridate 3 polozky k zaznamu, nemusite vubec upravovat stavajici soubory, proste tam ty polozky nebudou... V binarnim souboru s vetou pevne delky je potreba uvadet cisla verzi zaznamu a pri rozsireni prevrtat cely soubor. Dalsi vyhoda/nevyhoda je, ze se v tom uzivatel muze vrtat v poznamkovem bloku.

Nevyhoda textovych formatu je v tom, ze pri otevirani musite nacist cely soubor do pameti, a pri ukladani zase musite ukladat cely soubor zpet, coz zacne byt problem pri radove desititisicich zaznamu nebo zaznamu s velkymi textovymi bloky... (Rekneme, ze 1-10 Mb jeste lze ukladat najednou, ale 20-100Mb uz je celkem problem, 100Mb-4Gb a vice prakticky nelze)
Dale pokud ukladate primo do puvodniho souboru, tak po dobu ukladani tam ten soubor neni cely, a kdyz to uzivatel sestreli, tak prisel o celou databazi. Spravne je ukladat "inteligentne" do noveho souboru, s prejmenovanim az na konci ukladani, kdyz uz je cely soubor na disku...