Aaarrrgghh! RRRooowwwwoooaaRRRggh! AaaaarrRRrRrgggg!!!! AAAaaaaaaaaRRRRRR!!!<br><br>Ok então,<br><br>Bom, o que tenho é o seguinte:<br><br>a) Uma base de dados texto, campos separados por vígula<br>b) Uma base LDAP<br><br>
Preciso manter a base LDAP "sincronizada" com a base texto (a base texto é a origem de dados).<br><br>Não há nada que eu possa fazer para que essa base deixe de ser texto.<br><br>Portanto, peguei a base texto e trato com DBD::CSV.<br>
<br>A LDAP eu trato com Net::LDAP.<br><br>Só que as duas bases possuem campos distintos (em quantidade e nomes), afinal, não vou repetir no LDAP as mesmas porcarias que existem na base texto. Fora que não preciso de todos os campos CSV no LDAP.<br>
<br>Para simplificar meu trabalho eu pego a base texto e gero um array de objetos do tipo Livro.<br><br>E faço a mesma coisa, gero um array de objetos do tipo Livro, para a base LDAP.<br><br>Dessa forma eu passo a ter minimamente duas bases semelhantes (mesmos nomes de campo, quantidade, etc), ou seja, dois arrays contendo as duas bases.<br>
<br>E aí vem o trabalho que é usar isso. Preciso, por exemplo, "varrer" o array de livros vindo do CSV e conferir no LDAP se o livro está lá, se está faltando dado, se é para remover, se preciso mudá-lo de grupo, etc.<br>
<br>Ou seja, várias operações, nada rigorosamente específico neste momento.<br><br>Para ter uma idéia, o campo indexador só existe no CSV.<br><br>Meu trabalho agora, imediatamente, é adicionar esse campo indexador no LDAP. Já fiz um novo schema para minha base LDAP, etc.<br>
<br>Só falta ler o CSV, encontrar o respectivo Livro (pelo título) na LDAP e fazer as alterações.<br><br>Tudo muito simples.<br><br>Mas parece óbvio que vou ter que, num futuro nada distante, fazer várias operações entre essas bases. Para dar um exemplo, Livros possuem autores, que vêm de outro arquivo CSV e portanto precisam ser relacionados. Não vejo problema em criar um atributo objeto 'autores' no meu Livro...<br>
<br>Bom, eu apenas gostaria de saber se existe algum módulo que pudesse ser "plugado" nesses arrays de objeto que me permitisse fazer buscas, etc. Caso contrário eu estaria caindo no abismo de refazer um sistema relacional.<br>
<br>Se eu soubesse que não há nada do gênero, me passa pela cabeça ter toda uma base LDAP temporária onde eu jogaria os dados da base texto e poderia manipulá-la usando o Net::LDAP mesmo... mas isso de criar base temporária parece meio nojentão, eu queria resolver tudo na memória mesmo, antes de escrever qualquer coisa.<br>
<br>Sim, eu também posso jogar tudo num Postgre e acabar com essa história.<br><br>Mas eu já estou lidando com bases não relacionais. Se eu pudesse evitar a presença do banco de dados relacional seria mais interessante, eu resolveria tudo entre objetos e as bases originais.<br>
<br>Ah, como operações de escrita só precisam ser feitas na base LDAP e o Net::LDAP me fornece toda um interface que simplifica isso, o que fazer com os objetos depois de usados não me preocupa tanto.<br><br>A propósito, não estou ganhando dinheiro freela nenhum com isso, ok? É metade estudo, metade obrigação do meu emprego mesmo.<br>
<br>Foi mal o tamanho do email.<br><br><a href="http://search.cpan.org/%7Ejhi/String-Approx-3.26/Approx.pm" target="_blank"></a>[]'s<br>Gilberto<br>