Foi definido sequencialmente a quantidade de cada tabela e após isso executado o programa abaixo, gerando o tamanho esperado de 5GB no Banco de Dados.
____________________________________________________________________________
/*
* Created on 17/06/2012
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
//import java.util.ArrayList;
public class tebd_insert {
public static void main(String args[]) throws Exception{
//ArrayList<Integer> medicos = new ArrayList<Integer>(); // 4
//ArrayList<Integer> pacotes = new ArrayList<Integer>(); // 5
Boolean slashes = true;
String cidade;
String estado;
int x = 0;
MyTableCollection tabelas = new MyTableCollection();
Integer c_qtd_medico = 60;
Integer c_qtd_empresa = c_qtd_medico * 50;
Integer c_qtd_exames = 5;
Integer c_qtd_funcionario_empresa = c_qtd_empresa * 30;
Integer c_qtd_func_empr_exames = 20 * c_qtd_funcionario_empresa * c_qtd_exames;
Integer c_qtd_laudo = c_qtd_func_empr_exames;
Integer qtd_medico = c_qtd_medico;
Integer qtd_empresa = qtd_medico * 5;
//Integer qtd_exames = 5;
Integer qtd_funcionario_empresa = 400;
Integer qtd_func_empr_exames = 200;
Integer qtd_laudo = 200;
MyTable empresa = new MyTable("clin_empresa", c_qtd_empresa);
empresa.addColumn("empr_codigo", new MyPKColumn() );
empresa.addColumn("empr_cnpj", new MyColumn("numeric", 15) );
empresa.addColumn("empr_razao_social", new MyColumn("% % %",6,12) );
empresa.addColumn("empr_fantasia", new MyColumn("% %",6,12) );
empresa.addColumn("empr_rua", new MyColumn("% %",6,12) );
empresa.addColumn("empr_numero", new MyColumn("numeric", 5) );
empresa.addColumn("empr_complemento", new MyColumn("% %",6,12) );
empresa.addColumn("empr_bairro", new MyColumn("%",6,12) );
empresa.addColumn("empr_cidade", new MyColumn("% %",6,19) );
empresa.addColumn("empr_estado", new MyColumn("% % %",6,12) );
empresa.addColumn("empr_pais", new MyColumn("varchar", 105) );
empresa.addColumn("empr_data_cadastro", new MyColumn("date", null) ); //timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
empresa.addColumn("empr_ativo", new MyColumn("int", null ) );
tabelas.add(empresa);
MyTable exames = new MyTable("clin_exames", c_qtd_exames);
exames.addColumn("exam_codigo", new MyPKColumn() );
exames.addColumn("exam_nome", new MyColumn("varchar", 65) );
exames.addColumn("exam_ativo", new MyColumn("int", null) );
tabelas.add(exames);
MyTable func_empr_exames = new MyTable("clin_func_empr_exames", c_qtd_func_empr_exames);
func_empr_exames.addColumn("clin_func_empr_exam_codigo", new MyPKColumn() );
func_empr_exames.addColumn("clin_func_empr_exam_fk_exames", new MyFKColumn("clin_exames", "exam_codigo") );
func_empr_exames.addColumn("clin_func_empr_exam_fk_funcionario", new MyFKColumn("clin_funcionario_empresa", "func_empr_codigo") );
func_empr_exames.addColumn("clin_func_empr_exam_fk_funcionario", new MyColumn("int", null) );
func_empr_exames.addColumn("clin_func_empr_exam_fk_exames", new MyColumn("int", null) );
func_empr_exames.addColumn("clin_func_empr_exam_data_exame", new MyColumn("date", null) );
func_empr_exames.addColumn("clin_func_empr_exam_qtd", new MyColumn("??") ); // reduzindo até 99
func_empr_exames.addColumn("clin_func_empr_exam_valor", new MyColumn("??.??") ); //decimal 10,2
tabelas.add(func_empr_exames);
MyTable funcionario_empresa = new MyTable("clin_funcionario_empresa", c_qtd_funcionario_empresa);
funcionario_empresa.addColumn("func_empr_codigo", new MyPKColumn() );
funcionario_empresa.addColumn("func_empr_fk_empresa", new MyFKColumn("clin_empresa", "empr_codigo") );
funcionario_empresa.addColumn("func_empr_fk_empresa", new MyColumn("int", null) );
funcionario_empresa.addColumn("func_empr_nome", new MyColumn("% %",6,12) );
funcionario_empresa.addColumn("func_empr_rg", new MyColumn("????????-??") );
funcionario_empresa.addColumn("func_empr_cpf", new MyColumn("???.???.???-??") );
funcionario_empresa.addColumn("func_empr_rua", new MyColumn("% %",6,12) );
funcionario_empresa.addColumn("func_empr_numero", new MyColumn("numeric", 5) );
funcionario_empresa.addColumn("func_empr_complemento", new MyColumn("% %",6,20) );
funcionario_empresa.addColumn("func_empr_bairro", new MyColumn("%",6,12) );
funcionario_empresa.addColumn("func_empr_cidade", new MyColumn("% %",6,12) );
funcionario_empresa.addColumn("func_empr_estado", new MyColumn("varchar", 145) );
funcionario_empresa.addColumn("func_empr_pais", new MyColumn("varchar", 105) );
//funcionario_empresa.addColumn("func_empr_data_cadastro", new MyColumn("date", null) ); //timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
funcionario_empresa.addColumn("func_empr_ativo", new MyColumn("int", null) );
tabelas.add(funcionario_empresa);
MyTable laudo = new MyTable("clin_laudo", c_qtd_laudo);
laudo.addColumn("laudo_fk_func_empr_exames", new MyPKColumn() );
laudo.addColumn("laudo_fk_medico", new MyPKColumn() );
laudo.addColumn("laudo_fk_func_empr_exames", new MyFKColumn("clin_func_empr_exames", "clin_func_empr_exam_codigo") );
laudo.addColumn("laudo_fk_medico", new MyFKColumn("clin_medico", "medi_codigo") );
laudo.addColumn("laudo_data", new MyColumn("date", null) ); //
laudo.addColumn("laudo_descricao", new MyColumn("text", 510) );
tabelas.add(laudo);
MyTable medico = new MyTable("clin_medico", c_qtd_medico);
medico.addColumn("medi_codigo", new MyPKColumn() );
medico.addColumn("medi_nome", new MyColumn("% %",6,12) );
medico.addColumn("medi_crm", new MyColumn("numeric", 15) );
medico.addColumn("medi_especialidade", new MyColumn("varchar", 10) );
medico.addColumn("medi_ativo", new MyColumn("varchar", 45) );
tabelas.add(medico);
Double objetivo = 5368709120.0;
System.out.println("Size in Bytes");
System.out.println(tabelas.calculate());
System.out.println(objetivo);
System.out.println("objetivo alcancado = " + (tabelas.calculate() >= objetivo) );
MyDataAccess.open();
//Inserindo 5 exames
exames.setCustomValue(slashes, "exam_nome", "Admissional");
exames.setCustomValue(slashes, "exam_ativo", "1");
MyDataAccess.ExecuteInsert(exames.generateInsert());
exames.setCustomValue(slashes, "exam_nome", "Retorno ao Trabalho");
exames.setCustomValue(slashes, "exam_ativo", "1");
MyDataAccess.ExecuteInsert(exames.generateInsert());
exames.setCustomValue(slashes, "exam_nome", "Mudanca de Funcao");
exames.setCustomValue(slashes, "exam_ativo", "1");
MyDataAccess.ExecuteInsert(exames.generateInsert());
exames.setCustomValue(true, "exam_nome", "Periódico");
exames.setCustomValue(slashes, "exam_ativo", "1");
MyDataAccess.ExecuteInsert(exames.generateInsert());
exames.setCustomValue(true, "exam_nome", "Demissional");
exames.setCustomValue(slashes, "exam_ativo", "1");
MyDataAccess.ExecuteInsert(exames.generateInsert());
// Inserindo valores
Integer empresa_id;
Integer func_empr_exames_id;
Integer funcionario_id;
for(Integer i = 0; i < qtd_medico; i++){
//medico.setCustomValue(slashes, "medi_nome", XXXXXXXX );
//medico.setCustomValue(slashes, "medi_crm", XXXXXXXX );
//medico.setCustomValue(slashes, "medi_especialidade", XXXXXXXX );
medico.setCustomValue(slashes, "medi_ativo", "1");
MyDataAccess.ExecuteInsert(medico.generateInsert());
//System.out.print("M"+i);
}
System.out.println("");
for(Integer i = 0; i < qtd_empresa; i++){
x++;
if (x % 2 == 0){
x=0;
MyDataAccess.close();
MyDataAccess.open();
}
//System.out.print("E"+i);
cidade = MyRand.RandomNome(10, 15);
//cep = MyRand.MaskedNumber("??????-???");
estado = MyRand.RandomUF();
//csdsda
//empresa.setCustomValue(slashes, "empr_cnpj", XXXXXXXX );
//empresa.setCustomValue(slashes, "empr_razao_social", XXXXXXXX );
//empresa.setCustomValue(slashes, "empr_fantasia", XXXXXXXX );
//empresa.setCustomValue(slashes, "empr_rua", XXXXXXXX );
//empresa.setCustomValue(slashes, "empr_numero", XXXXXXXX );
//empresa.setCustomValue(slashes, "empr_complemento", XXXXXXXX );
//empresa.setCustomValue(slashes, "empr_bairro", XXXXXXXX );
//empresa.setCustomValue(slashes, "empr_cidade", cidade);
empresa.setCustomValue(slashes, "empr_estado", MyRand.RandomUF());
empresa.setCustomValue(slashes, "empr_pais", "Brasil" );
//empresa.setCustomValue(slashes, "empr_data_cadastro", XXXXXXXX );
empresa.setCustomValue(slashes, "empr_ativo", "1" );
empresa_id = MyDataAccess.ExecuteInsert(empresa.generateInsert());
for(Integer j = 0; j < qtd_funcionario_empresa; j++){
//System.out.print("F"+j);
funcionario_empresa.setCustomValue(slashes, "func_empr_fk_empresa", empresa_id.toString() );
//funcionario_empresa.setCustomValue(slashes, "func_empr_nome", "XXXXXXXX" );
funcionario_empresa.setCustomValue(slashes, "func_empr_rg", MyRand.MaskedNumber("????????-??") );
funcionario_empresa.setCustomValue(slashes, "func_empr_cpf", MyRand.MaskedNumber("???.???.???-??") );
//funcionario_empresa.setCustomValue(slashes, "func_empr_rua", "XXXXXXXX" );
//funcionario_empresa.setCustomValue(slashes, "func_empr_numero", "XXXXXXXX" );
//funcionario_empresa.setCustomValue(slashes, "func_empr_complemento", "XXXXXXXX" );
//funcionario_empresa.setCustomValue(slashes, "func_empr_bairro", "XXXXXXXX" );
//funcionario_empresa.setCustomValue(slashes, "func_empr_cidade", "XXXXXXXX" );
funcionario_empresa.setCustomValue(slashes, "func_empr_estado", MyRand.RandomUF());
funcionario_empresa.setCustomValue(slashes, "func_empr_pais", "Brasil");
//funcionario_empresa.setCustomValue(slashes, "func_empr_data_cadastro", "XXXXXXXXXX");
funcionario_empresa.setCustomValue(slashes, "func_empr_ativo", "1");
funcionario_id = MyDataAccess.ExecuteInsert(funcionario_empresa.generateInsert());
Boolean demitido = false;
//funcionarios fazendo exames.
for(Integer k = 0; k < qtd_func_empr_exames; k++){
//System.out.print("x"+k);
/*
* Liga um funcinario a um exame ?
*
* */
//ids dos exames de 2 a 5
Integer exame_id;
if(k == 0){
exame_id = 0;
}
else if( (!demitido) && (k == 4) && (MyRand.RandomInt(0,50) == 35) )
{
exame_id = 4;
}
else{
exame_id = MyRand.RandomInt(1,3);
}
//um exame realizado
func_empr_exames.setCustomValue(slashes, "clin_func_empr_exam_fk_funcionario", funcionario_id.toString() );
func_empr_exames.setCustomValue(false, "clin_func_empr_exam_fk_exames", "(SELECT c.`exam_codigo` FROM clin_exames c LIMIT "+exame_id+",1)" );
//func_empr_exames.setCustomValue(slashes, "clin_func_empr_exam_data_exame", XXXXXXXX );
//func_empr_exames.setCustomValue(slashes, "clin_func_empr_exam_qtd", XXXXXXXX );
//func_empr_exames.setCustomValue(slashes, "clin_func_empr_exam_valor", XXXXXXXX );
func_empr_exames_id = MyDataAccess.ExecuteInsert(func_empr_exames.generateInsert());
//um laudo
laudo.setCustomValue(slashes, "laudo_fk_func_empr_exames", func_empr_exames_id.toString());
laudo.setCustomValue(false, "laudo_fk_medico", "(SELECT c.`medi_codigo` FROM clin_medico c LIMIT "+MyRand.RandomInt(0,qtd_medico-1)+",1)"); //Select???
MyDataAccess.ExecuteInsert(laudo.generateInsert());
}
//System.out.println("");
}
//System.out.println("");
}
MyDataAccess.close();
/*
clin_medico
clin_empresa
clin_exames
clin_funcionario_empresa
clin_func_empr_exames -- clin_laudo
*/
}
}
Nenhum comentário:
Postar um comentário