Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Gotowe zrzuty baz danych
Forum PHP.pl > Forum > Bazy danych
Jabol
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.
FiDO
O!! Dobre pytanie... przylaczam sie. Chociaz mi wystarczy kilkaset/kilka tysiecy rekordow, nie potrzebuje milionow winksmiley.jpg
Seth
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 smile.gif
Jabol
ale ja bym chcial jakies urozmaicenie... jakbym mial to zrobic w petli to bym musial chyba microtime dla urozmaicenia insertowac...
uboottd
Zawsze mozna uzyc rand()...
Seth
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.
FiDO
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?
uboottd
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]
spenalzo
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
Jabol
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
FiDO
Znaczy chcialbys sciagac z netu 26GB baze, tak? biggrin.gif
Jabol
no moze przesadzilem...
Jabol
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
Jabol
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 tongue.gif ) i najważniejsze, że działa!
FiDO
hhe, widze ze odpowiedziales na post, ktorego juz nie ma 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 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 winksmiley.jpg
Jabol
Cytat
PS. czemu nie napisales tego w php, jego przeciez znasz duzo lepiej niz C.
Let me guess... ambicja? I prawidlowo 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 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!)
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.