phpbar.de logo

Mailinglisten-Archive

[php] [Gesucht] performante filedb für viele daten

[php] [Gesucht] performante filedb für viele daten

Dario Nuevo php at xbe.ch
Sam Mai 8 17:43:44 CEST 2004


hi enrico..
danke für die antworten, versuche mal alle in einem zu verarbeiten ;)

>zumal Du ja - wie mir scheint - nicht mit komplexen Graphen sondern mit 
>großen Relationen/Tabellen zu tun hast. 
>  
>
ja, das ist so, die grossen datenmengen machen die probleme.. ich denk 
mysql wär sehr schnell, wäre die haupttable (welche ja keine myisam mehr 
ist, sondern eine merged myisam (also 4 tables zu einer gemerged..)) 
durch die vielen langen texte nicht so aufgebläht..

>Evtl. hilft Dir aber auch eine tabellarischen Datenbank, z.b. 
>berkeley-db oder eine AQL-engine wie db++ weiter.
>  
>
was ich in deinen anderen mails gesehen habt verspricht doch viel ;-) 
kenn mich mit berkeley nicht so aus, wo find ich infos dazu?  hab mir 
die dba-extension mal angeschaut, leider nicht built-in, und ich blick 
nicht ganz durch welcher db-handler wohl am besten geeignet wäre.. und 
eben auch hier, wenn möglich möcht ich nur built-in-extensions 
benutzten, aber gut, mysql ist ja auch nicht built-in aber widely spread ;-)

(anderes mail)

>Das wird immer langsam. 
> Scriptsprachen sind gut für high-level-Anweisungen
> [..]
> Ich verwende selbst in einigen Projekten von php geparste Textfile-DBs,
> aber dann nur für _kleine_ und konstante bzw. nur manuell gepflegte 
> Datenbestände wie Menus oder andere Teile meines Website-Baukasten.

jein.. klar sind interpretierte sprachen mit so vielen zwischenstellen wie php nicht unbedingt performant, aber auch mit riesigen textfiles kann php sehr gut umgehen.. eben nach dem fortune-prinzip, indem man den filepointer hin- und herschiebt.. 
du meinst ja berkeley-db implementiert genau das, das wär natürlich ideal ;-)

> BTW: gibts eigentlich in PHP auch sowas wie tie() in perl ?

bo, perl hab ich das letzte mal 1997 gebraucht und von dieser func hätte ich nie gehört ;-)

(anderes mail)

>> hab mir das mal angeschaut. mein problem ist, dass ich das tool dann als 
>> opensource (gpl) rausbringen will und man soll das auch auf shared 
> was genau wird das ?

eine laufende demo ist unter http://phptimes.xbe.ch zu finden - ein webbasierter rss-aggregator.. mein tool ist quasi ein "personal google news" zum selbstinstallieren mit hohen ansprüchen ;-) mit einer xmlrpc-schnittstelle soll es eines tages ein desktop-tool (windows) geben, welches bei neuen meldungen aufploppt ;) 

(anderes mail)

>> ich bin auf der suche nach einem engine (eine klasse oder script) 
>> welches grosse mengen text verwalten kann.
> Schonmal mit postgresql versucht ? 

hm, wer hat schon postgres auf seinem shareed host? das tool soll nicht nur von server-ownern wie mir oder dir installiert werden können ;-) aber ich denk postgres wär eine gute sache, könnte ich viele sachen auch als stored procedures implementieren..

> Indices richtig gesetzt ?

so sieht meine grosse table aus:
mysql> show columns from items;
+------------+--------------+------+-----+---------------------+----------------+
| Field      | Type         | Null | Key | Default             | Extra          |
+------------+--------------+------+-----+---------------------+----------------+
| autoid     | int(11)      |      | PRI | NULL                | auto_increment |
| title      | varchar(250) |      |     |                     |                |
| feed       | int(11)      |      |     | 0                   |                |
| date       | datetime     |      |     | 0000-00-00 00:00:00 |                |
| url        | varchar(250) |      |     |                     |                |
| content    | text         | YES  |     | NULL                |                |
| dc_creator | text         | YES  |     | NULL                |                |
| dc_subject | text         | YES  |     | NULL                |                |
| dc_date    | varchar(250) | YES  |     | NULL                |                |
| counter    | int(11)      |      |     | 0                   |                |
+------------+--------------+------+-----+---------------------+----------------+

mysql> show index from items;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| items |          0 | PRIMARY  |            1 | autoid      | A         |        NULL |     NULL | NULL   |      |            |         |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
1 row in set (0.00 sec)

das feld um was es geht heisst "content" - und wie ich sehe hab ich keinen index drauf, hm??!
ja toll.. da schreib ich mir hier nen wolf.. super.. ;-) 

naja, dann setz ich ma nen fulltext index auf feld `content` - btw, ist es denn nicht sinnvoll, einfach ein where= zu machen? uh, da kommt mein manko raus..
ein schwaches query was ich z.b. hab:

SELECT items.*, feeds.*, items.title as ititle, items.url as ilink, feeds.title as ftitle FROM feeds, items WHERE items.feed=feeds.autoid AND (`feed`=139 OR `feed`=133 OR `feed`=157 OR `feed`=132 OR `feed`=289 OR `feed`=166) order by `date` desc

----
tja - und kaum geht es um sql-queries soll ich liste wechseln?! - *schnief* ;-)

gruss & danke
dario





php::bar PHP Wiki   -   Listenarchive