Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: txtSQL czyli tekstowa baza SQL
Forum PHP.pl > Forum > Bazy danych
Neotion
Nurtuje mnie ostatnio fakt że wiele serwerów nie oferuje baz SQL, i wiele osób nie ma do takich baz dostępu. I w mojej niezmierzonej chęci pisania (programów a nie opowiadań) wpadłem na pomysł żeby stworzyć tekstową bazę obsługującą język SQL. Moje pierwotne założenia są takie:

Struktura bazy:

|-Baza (jako katalog) : w nim plik opisujący tabele
```|-Tabela1 (jako katalog): w niej plik opisujący pola i ich właściwości (auto_increment, INT, itd...), pliki rekordów
``````|-Rekord1 (jako plik): zawartość pól opisanych w pliku właściwości tabeli \
``````|-Rekord2 (jako plik): jak wyżej tylko nazwany inaczej / każdy rekord musiałby mieć inną nazwe (ID)
```````...
```|-Tabela2 (jako osobny katalog): i jak wyżej
```...
|-Baza2


i tak dalej...

Co wy na to?
Vertical
...Podobnie napisany jest MySQL, z tym, że bez plików *.TXT. Jeśli uda Ci się zrobić, żeby pliki tekstowe reagowały na zapytania SQL... To z pewnością pogratuluję
sf
Hm, wydaje mi się to bezcelowe... Przeważnie na darmowych stronach trzyma się rzeczy mało skomplikowane. Jeśli ktoś sie decyduje na coś poważniejszego to wykup konta z bazą SQL nie jest dla niego dużym wydatkiem.

SQL to wygoda i szybkość.

Pliki tekstowe tego nie oferują i nic tego nie zmieni. System, który chcesz napisać raczej wszystko spowolni jeszcze bardziej.
toszcze
Cytat(Vertical @ 2004-10-11 18:39:17)
Jeśli uda Ci się zrobić, żeby pliki tekstowe reagowały na zapytania SQL... To z pewnością pogratuluję

A czemu by nie?
Wprawdzie funkcjonalnosc ma to dosc ograniczona, ale do wiekszosci zastosowan wystarczy.
Neotion
Trzebaby to tak zrobić by było całkowicie kompatybilne z SQL. A napisać dlatego że byłaby to alternatywa dla mySQL. Tylko że sam tego nie napiszę a zeev suraski mi raczej wiele nie pomoże..
rogrog
szczerze mowiac kiedys tez sie nosilem z takim pomyslem ale postanowilem sobie dac spokój

dla mnie największym problemem było zdaje się odpowiednie parsowanie zapytań SQL - baza txtSQL na sf.net działa za pomocą parametrów przekazywanych w tablicach a nie za pomocą zapytania sqlowskiego

w zasadzie coś takiego ciężko nazywać sqlem (sama nazwa - Structured Query Language). dlatego jeśli uda Ci się napisać odpowiedni parser i nieźle działajace bazy na plikach textowych to gratuluję. Oczywiście w pojedynkę można się pokusić tylko o podstawową funkcjonalność bo przecież nad prawdziwymi bazami pracują sztaby ludzi...
toszcze
Cytat(rogrog @ 2004-10-19 22:50:35)
baza txtSQL na sf.net działa za pomocą parametrów przekazywanych w tablicach a nie za pomocą zapytania sqlowskiego

Sluszna uwaga. ;)
Ale ten 'silnik' obsluguje zapytania SQLowe (chociaz rowniez ma sporo ograniczen).
ARJ
jeśli na serwerze jest brak bazy SQL można użyć darmowej bazy FreeSQL
gdy uczyłem się php założyłem konto na friko i wykorzystywałem tą baze do nauki.
bregovic
Phi... Jak tylko PHP5 wejdzie na wiecej serverow, to takie rozwazania bedziecie mogli sobie szczesliwie odpuscic. SQLIte rozwiazuje jakiekolwiek problemy dotyczace skladowania danych gdy brak servera baz danych...
DeyV
o ile oczywiście hostodawca zdecyduje się na udostępnienie SQLite, co wcale nie będzie (jak sądzę) standardem.
bregovic
DeyV: Czemu nie? Co moze stac na drodze?
splatch
Co do pisanai silnika - sam napisałem część czegoś takiego prz y pomocy Bory. Całość ma zaimpletowany proste wybieranie przy pomocy sql oraz wyświetlanie. Nie jest to może coś specjalnego.. no i do tego od dłuższego czasu stoi winksmiley.jpg. Jeśli ktoś jest zainteresowany podeślę źródła na mail.
DeyV
Cytat
DeyV: Czemu nie? Co moze stac na drodze?

Biznes?
Dlaczego masz dać klientom coś, co
a) ma podobne możliwości
cool.gif bardziej obciąża maszynę
c) jest jednak wolniejsze
jeśli możesz kazać zapłacić sobie za mysql albo pg dodatkową kasę, i mieć przynajmniej pewność, że nie będzie Ci to spowalniać maszyny?
Neotion
Prześlij mi tą bazę splatch. może wykorzystam jako podstawę. Ale weźcie pod uwaę że SQLite działa na jednym pliku i to chba znacznie opóźnia działanie tej bazy no nnie?
KeNio
Neotion, nie musisz już myśleć o txtSQL. Ktoś dawno to zrobił za ciebie tongue.gif
Właźcie tutaj: http://txtsql.sourceforge.net/
Oraz co nieco po PL: http://www.cms.rk.edu.pl/article-56.html
tiraeth
Kenio szybki jesteś smile.gif Bodajże 4 post od góry...

Co do parsowania zapytań.... czy nie mozna zrobić czegoś takiego:
  1. <?php
  2. // Poniższa zmienna przetrzymuje nazwę bazy
  3. $database_name = 'baza';
  4. $query = &#092;"SELECT * FROM table LIMIT 0, 1\";
  5.  
  6. if(eregi('SELECT', $query))
  7. {
  8. if(eregi('LIMIT', $query))
  9. {
  10. $str = explode('LIMIT', $query);
  11. $limit = $str[1];
  12. $limit = str_replace(' ', '', $limit);
  13. $help = explode(',', $limit);
  14. $start = $help[0];
  15. $howmany = $help[1];
  16. }
  17. else
  18. {
  19. $start = 0;
  20. $howmany = -1;
  21. }
  22.  
  23. $a = str_replace('LIMIT', 'FROM', $query);
  24. $a = explode('FROM', $a);
  25. $a[1] = str_replace(' ', '', $a[1]);
  26. $table_name = $a[1];
  27.  
  28. // Zmienna $query_type przetrzymuje typ zapytania (select, insert, update, drop etc.)
  29. $query_type = &#092;"Selecting data from base\";
  30. preg_match(&#092;"/SELECT (.*) FROM/\", $query, $sel);
  31. $select = $sel[0][0];
  32. $records = (eregi('*', $select)) ? read_all_records($table_name) : explode(',', $select);
  33.  
  34. // Utworzona tablica $records przetrzymuje wszystkie nazwy pól, z których pobierze
  35. y recordy
  36.  
  37. foreach($records as $key => $record_title)
  38. {
  39. $handle = file($database_name.'/'.$table_name.'/'.$record_title);
  40. $end = ($howmany == -1) ? count($handle) : $howmany;
  41. for($i=$start; $i<$end; $i++)
  42. {
  43. $selected[$record_title][] = $handle[$i];
  44. }
  45. }
  46. }
  47.  
  48. // Wywalamy przykładowe dane
  49. for($i=0; $i<count($selected); $i++)
  50. {
  51. echo $selected['tutaj_sobie_jakies_pole_z_bazy'][$i].'<br />';
  52. }
  53. ?>

?

Taki sobie przykładowe zapytanie smile.gif Narazie obsługuje tylko SELECT i LIMIT tongue.gif Można przerobić aby były to funkcje, czy też klasy ale to już zależy od Ciebie... myślę, że fajnie rozwiązane smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.