Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Gotowe zrzuty baz danych
Jabol
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


Mam tekie pytanie. Czy są takie serwery, gdzie mozna sobie ściągnąć zrzuty baz danych o skomplikowanych relacjach i najlepiej paru milionach rekordów? Bardzo by mi się to przydało, gdyż baze i relacje zrobieć problemem nie jest, ale chodzi o rekordy. A gdyby mieć coś takiego to by można było trochę sobie poćwiczyć i potestować baze danych.
Go to the top of the page
+Quote Post
FiDO
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


O!! Dobre pytanie... przylaczam sie. Chociaz mi wystarczy kilkaset/kilka tysiecy rekordow, nie potrzebuje milionow (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Seth
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


To raczej mozesz sobie sam zrobic. Wrzucasz w petle INSERTa i gotwe. Ja tak robie w pracy. Co prawda przy wrzucaniu 500 000 rekorodow ide na herbate (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Jabol
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


ale ja bym chcial jakies urozmaicenie... jakbym mial to zrobic w petli to bym musial chyba microtime dla urozmaicenia insertowac...
Go to the top of the page
+Quote Post
uboottd
post
Post #5





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

Ostrzeżenie: (0%)
-----


Zawsze mozna uzyc rand()...
Go to the top of the page
+Quote Post
Seth
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Dokladnie to co napisal ubot. Ja takze daje losowo wygenerowane teksty, losowa godzinke, losowa enumeracje itp itd. Nie sadze aby byl jakis serwis udostepniajacy takie rzeczy gdyz kazda struktura bazy jest inna.
Go to the top of the page
+Quote Post
FiDO
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


Cytat
Dokladnie to co napisal ubot. Ja takze daje losowo wygenerowane teksty, losowa godzinke, losowa enumeracje itp itd.

Jak losujesz teksty?? Z poziomu php czy da rade z sql'a?
Go to the top of the page
+Quote Post
uboottd
post
Post #8





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

Ostrzeżenie: (0%)
-----


jak niedlugie teskty to mozna to zrobic z sql-u (MySQL >=4.0) funkcja:

[sql:1:78148d20fb]
elt(rand(4)+1,'tekst1','tekst2','tekst3','tekst4')
[/sql:1:78148d20fb]
Go to the top of the page
+Quote Post
spenalzo
post
Post #9





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Ja to robię tak - wystarczy ten przykład sobie dopasować.
[php:1:6570ab9378]<?php
// Funkcja generująca łańcuchy znaków
function uid($l,$in)
{
$z["c"]="0123456789";
$z["z"]="abcdefghijklmnoprstuvxyzq";
$z["a"]="abcdefghijklmnoprstuvxyzq0123456789";
$z["A"]="abcdefghijklmnoprstuvxyzq0123456789ABCDEFGHIJKLMNOPRSTUVXYZ";
$z["Ac"]="abcdefghijklmnoprstuvxyzqABCDEFGHIJKLMNOPRSTUVXYZ";
$z["As"]="ab cd efghi jklmno prstuvxyzqA BCDEFGHIJKL MNOPRSTUVXYZ ";
$z["s"]="010203040506070809";
for($i=0; $i<$l; $i++)
{
$s.=substr($z[$in],(rand()%(strlen($z[$in]))),1);
}
return($s);
}

srand((double)microtime()*1000000);
set_time_limit(0);
polacz();
for($i=0; $i<20000; $i++)
{
$zm1=uid("15","A");
$zm2=rand(1,37);
$zm3="-1";
$zm4=uid(rand(50,400),"As"); // Tekst losowej długości i losowych znakach
$zm5=rand(0,1);
$zm6=rand(1,4);
$zm7=uid(3,"c").".".uid("2","c");
$q=mysql_query("INSERT INTO bla bla bla");
?>[/php:1:6570ab9378]
Czas dodania 20000 rekordów to około 1,5-2 minuty
Go to the top of the page
+Quote Post
Jabol
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


Z listy dyskusyjnej:
Cytat
We've got a database that has about 89 Million rows, under PostgreSQL 7.3.3 on a dual PIII 1.2 with 4 GBytes of RAM on a 5 disk RAID 5 array. The dataset itself is about 26+ GBYtes in size, all of it in the one table.
Cos takiego bym chcial...

Nawet bez takiego sprzetu
Go to the top of the page
+Quote Post
FiDO
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


Znaczy chcialbys sciagac z netu 26GB baze, tak? (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Jabol
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


no moze przesadzilem...
Go to the top of the page
+Quote Post
Jabol
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


już mam coś fajnego
służy do przerzucania do bazy danych z system plików, z tym, że pliki nie są prawdziwe i wszystkie mają wartość określoną przez PLIK
program korzysta z bazy danych podanej tutaj http://forum.php.pl/viewtopic.php?t=4037
Kod
#define PQHOST NULL

#define PQPORT NULL

#define PQOPTIONS NULL

#define PQTTY NULL

#define PQNAME "postgres"

#define PQUSER "php_pl"

#define PQPASS "**************"

#define INSERT_DIR ""

#define NAME "/"

#define PLIK "Plik testowy, który wkładam do bazy za pomocą programu w C"



#define FALSE 0

#define TRUE !FALSE

#include<libpq-fe.h>

#include<unistd.h>

#include<string.h>

#include<stdio.h>

#include<stdlib.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<dirent.h>

#include<errno.h>

#include<fcntl.h>



PGconn *conn;



char *insertid( /* PGconn *conn */ )

//PGconn *conn

{

    extern PGconn *conn;

    PGresult *res;

    res = PQexec( conn, "SELECT last_value FROM categories_id_seq;" );

    if( !res || PQresultStatus( res ) != PGRES_TUPLES_OK )

    {

        puts( "Cannot get ID" );

    }

    return PQgetvalue( res, 0, 0 );

}



int insertdir( /* PGconn *conn, */ char *path, char *name, char *id )

//PGconn *conn

//const char *path;

//const char *name;

//const char id[20];

{

    char *query, *iid, *temppath;

    PGresult *res;

    extern PGconn *conn;

    DIR *dir;

    FILE *file;

    struct dirent *dirs;

    struct stat *status;



    if( ( strcmp( name, "." ) == 0 ) || ( strcmp( name, ".." ) == 0 ) )

        return TRUE;



    temppath = malloc( 200 );

    strcpy( temppath, path );

    strcat( temppath, ( ( strcmp( path, "/" ) == 0 ) || ( strcmp( path, "" ) == 0 ) )? "": "/" );

    strcat( temppath, name );



    if( ( dir = opendir( temppath ) ) != NULL )

    {

        query = malloc( 100 );

        printf( "Tworzenie katalogu: %sn", temppath );

        strcpy( query, "SELECT mkdir('" );

        strcat( query, ( strcmp( name, "" )  == 0 ) ? "root" : name );

        strcat( query, "', ");

        strcat( query, id );

        strcat( query, ");" );

        printf( "Wykonywane zapytanie: %sn", query );

        res = PQexec( conn, query );

        free( query );

        if( !res || PQresultStatus( res ) != PGRES_TUPLES_OK )

        {

            printf( "Błędne zapytanie:%sn", query );

            printf( "%sn%sn", PQresultErrorMessage( res ), PQerrorMessage( conn ) );

            return FALSE;

        }

        iid = insertid( conn );

        while( ( dirs = readdir( dir ) ) != NULL )

            if( insertdir( /* conn, */ temppath, dirs->d_name, iid ) == FALSE )

                 return FALSE;

        free( temppath );

        return TRUE;

    }

    else if( errno == ENOTDIR )

    {

        query = malloc( 200 );

        printf( "Tworzenie pliku: %sn", temppath );

        strcpy( query, "SELECT mk('" );

        strcat( query, name );

        strcat( query, "', " );

        strcat( query, id );

        strcat( query, ", '" );

        strcat( query, PLIK );

        strcat( query, "');" );

        printf( "Wykonywane zapytanie: %sn", query );



        res = PQexec( conn, query );

        free( query );

        free( temppath );

        if( !res || PQresultStatus(res) != PGRES_TUPLES_OK )

        {

            printf( "Błędne zapytanie:%sn", query );

            return FALSE;

        }

    }

    else

        return TRUE;

}



int main( void )

{

    extern PGconn *conn;



    conn = PQsetdbLogin( PQHOST, PQPORT, PQOPTIONS, PQTTY, PQNAME, PQUSER, PQPASS );

    

    PQexec( conn, "BEGIN;" );

    printf( "%sn", PQerrorMessage( conn ) );

    if( insertdir( /* conn, */ INSERT_DIR, NAME, "1" ) == FALSE )

    {

        puts( "Inserting Failed!" );

        PQexec( conn, "ROLLBACK;" );

        PQfinish( conn );

        exit( 1 );

    }

    PQexec( conn, "COMMIT;" );

    PQfinish( conn );



    puts( "Program succed" );



    return 0;

}
jak na razie nie wkłada jeszcze plików tak jakbym chciał, ale nie udało mi się jeszcze zrobić poprawnego ich otwierania i czytania
Go to the top of the page
+Quote Post
Jabol
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


ehh racja, ale to mój pierwszy program w c większy niż sto linijek (boje się że jak dam sprintf to już tak nie będzie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) i najważniejsze, że działa!
Go to the top of the page
+Quote Post
FiDO
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


hhe, widze ze odpowiedziales na post, ktorego juz nie ma (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
po kilku minuitach (jeszcze nie bylo odpowiedzi) stwierdzilem, ze jednak nie bede wytykal tego typu bledow i usunalem.

PS. czemu nie napisales tego w php, jego przeciez znasz duzo lepiej niz C.
Let me guess... ambicja? I prawidlowo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
PPS. dopiero teraz doczytalem, ze masz jakis problem z odczytywaniem plikow, napisz jaki, postaram sie pomoc. Co prawda nie to forum, wiec moze na PM, coby nas nie zbanowali (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Jabol
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


Cytat
PS. czemu nie napisales tego w php, jego przeciez znasz duzo lepiej niz C.
Let me guess... ambicja? I prawidlowo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
http://forum.php.pl/viewtopic.php?t=4065&highlight=dirTutaj mam to samo w php ale nie działa
ambicja też trochę wchodzi w grę
Cytat
PPS. dopiero teraz doczytalem, ze masz jakis problem z odczytywaniem plikow, napisz jaki, postaram sie pomoc. Co prawda nie to forum, wiec moze na PM, coby nas nie zbanowali (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Ja sobie z tym poradze, tylko będe musiał trochę pokombinować

a tak wogóle to ten kod jest już bardzo nieaktualny, ponieważ
1. jest bardzo wolny (ok. 3 plików/katalogów na sek), więc coś musi być niewydajne, a mi się wydaje, że struktuara bazy
2. po pewnych doświadczeniach nie mam zamiaru więcej pracować na tej strkuturze, bo jest bardzo ( oj jak bardzo ) łatwa do zniszczenia
3. albo moje rozwiązania są bardzo kiepskie albo ta strktura (stawiam na sktrukturę, ścieżke wyciągam jednym selectem i jednym forem) jest kiepska bo wyciągnięcie głupich 8000 ścieżek trwa ok 500000 ms (więc komu to robi różnicę, a to jest według niektórych najważniejsza zaleta tej struktury!)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 16:18