XML-RPC + Python + Banco de Dados

          Fernando Massen

        15 de novembro de 2006




                         ...
Introdu¸˜o
       ca
Fernando
Objetivos
Python
XML
XML-RPC
SQL

Motiva¸˜o
      ca
Ponte com o Banco
de Dados            I...
Fernando

Introdu¸˜o
       ca
Fernando
                    s   Desenvolvo software para backend corporativo
Objetivos    ...
Objetivos

Introdu¸˜o
       ca
Fernando
                    s   Demonstrar o protocolo XML-RPC do ponto de vista do
Objet...
Python

Introdu¸˜o
       ca
Fernando
                    Mesmo que eu esteja apenas rezando para o clero, n˜o custa
     ...
XML

Introdu¸˜o
       ca
Fernando
                    ´
                    E aquele encoding de texto que todo mundo con...
XML-RPC

Introdu¸˜o
       ca
Fernando
                    ´
                    E o meio de transporte escolhido para dem...
SQL

Introdu¸˜o
       ca
Fernando
                    Indispens´vel:
                              a
Objetivos           ...
Introdu¸˜o
       ca

Motiva¸˜o
      ca
Uma interface unica
              ´
com Bancos de
Dados
N˜o h´ gram´ticas
  a a  ...
Uma interface unica com Bancos de Dados
                                    ´

Introdu¸˜o
       ca
                      ...
N˜o h´ gram´ticas XML para SQL no W3C!
                       a a       a

Introdu¸˜o
       ca
                      s   ...
SQL tem a cara do XML!

Introdu¸˜o
       ca
                      s   O SQL foi criado numa ´poca sem as possibilidades e...
Introdu¸˜o
       ca

Motiva¸˜o
      ca
Ponte com o Banco
de Dados
Escolhi o
PostgreSQL
C´digo de conex˜o
 o             ...
Escolhi o PostgreSQL

Introdu¸˜o
       ca
                    s   Neste ponto utiliza-se um driver normal de banco de dad...
C´digo de conex˜o com BD
                     o             a

Introdu¸˜o
       ca
                    Usando pyPgSQL:
Mo...
Introdu¸˜o
       ca

Motiva¸˜o
      ca
Ponte com o Banco
de Dados
Proposta de
Gram´tica XML
     a
para SQL
Limita¸oes
 ...
Limita¸˜es
                          co

Introdu¸˜o
       ca
                    s   O XML aceita qualquer nota¸˜o; o que...
Tipos de Dados Recomend´veis
                                           a

Introdu¸˜o
       ca
                    Pratic...
SELECT: exemplo

Introdu¸˜o
       ca
                    <select>
Motiva¸˜o
      ca
                      <fields>
Ponte...
SELECT: resultado

Introdu¸˜o
       ca
                    Esta ´ uma proposi¸˜o de sa´ a esta query.
                   ...
INSERT

Introdu¸˜o
       ca
                    <insert into="clientes">
Motiva¸˜o
      ca
                      <field ...
INSERT (cont.)

Introdu¸˜o
       ca
                    <insert into="clientes">
Motiva¸˜o
      ca
                     ...
UPDATE

Introdu¸˜o
       ca
                    <update table="clientes">
Motiva¸˜o
      ca
                       <fiel...
DELETE

Introdu¸˜o
       ca
                    <delete table="clientes">
Motiva¸˜o
      ca
                       <wher...
Introdu¸˜o
       ca

Motiva¸˜o
      ca
Ponte com o Banco
de Dados
Proposta de
Gram´tica XML
     a
para SQL

XML-RPC
Com...
Como funciona?

Introdu¸˜o
       ca
                    s   Primeiro, temos um servi¸o HTTP num servidor que
            ...
E em c´digo? (Servidor)
                          o

Introdu¸˜o
       ca
                    Este seria o c´digo de um su...
E em c´digo? (Cliente)
                          o

Introdu¸˜o
       ca
                    Este seria, ent˜o, um “client...
No nosso caso, juntando tudo

Introdu¸˜o
       ca
                    s   O cliente acessa o servidor na porta 10000 no e...
Introdu¸˜o
       ca

Motiva¸˜o
      ca
Ponte com o Banco
de Dados
Proposta de
Gram´tica XML
     a
para SQL

XML-RPC

Ma...
Esta id´ia j´ teve implementa¸˜es!
                            e a                   co

Introdu¸˜o
       ca
            ...
O c´digo
                        o

Introdu¸˜o
       ca
                     s   O c´digo est´ dispon´ no endere¸o abaixo...
That’s all folks!

Introdu¸˜o
       ca
                                 So long and thanks for all the queries!
Motiva¸˜o...
Upcoming SlideShare
Loading in …5
×

XML-RPC + Python + Banco de Dados - Fernando Massen

1,237 views

Published on

Published in: Technology, News & Politics
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,237
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
31
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

XML-RPC + Python + Banco de Dados - Fernando Massen

  1. 1. XML-RPC + Python + Banco de Dados Fernando Massen 15 de novembro de 2006 1 / 33
  2. 2. Introdu¸˜o ca Fernando Objetivos Python XML XML-RPC SQL Motiva¸˜o ca Ponte com o Banco de Dados Introdu¸˜o ca Proposta de Gram´tica XML a para SQL XML-RPC Mais informa¸oes c˜ 2 / 33
  3. 3. Fernando Introdu¸˜o ca Fernando s Desenvolvo software para backend corporativo Objetivos s Tem um pouco de tudo, inclusive Python Python XML s Desde o Python 1.5, por´m usando de verdade a partir do e XML-RPC 2.1 SQL s Principalmente para tarefas onde o tempo ´ crucial e Motiva¸˜o ca Ponte com o Banco s Obviamente tamb´m por causa da facilidade e de Dados Proposta de Gram´tica XML a para SQL XML-RPC Mais informa¸oes c˜ 3 / 33
  4. 4. Objetivos Introdu¸˜o ca Fernando s Demonstrar o protocolo XML-RPC do ponto de vista do Objetivos desenvolvedor de aplica¸˜es. co Python XML s Mostrar a facilidade de programa¸˜o em Python. ca XML-RPC s Fornecer novas id´ias para desenvolvimento utilizando uma e SQL linguagem-ponte unica entre bancos de dados. ´ Motiva¸˜o ca Ponte com o Banco s Juntar tudo isto: Python, SQL, XML e RPC. de Dados s Distribuir um pequeno c´digo-exemplo que demonstra estes o Proposta de Gram´tica XML a acrˆnimos juntos. o para SQL s Se der tempo, demonstrar parte do c´digo. o XML-RPC Mais informa¸oes c˜ 4 / 33
  5. 5. Python Introdu¸˜o ca Fernando Mesmo que eu esteja apenas rezando para o clero, n˜o custa a Objetivos citar algumas virtudes do Python: Python XML s Uma linguagem absurdamente f´cil de aprender a XML-RPC SQL s Tem uma implementa¸˜o de Orienta¸˜o a Objeto ca ca Motiva¸˜o ca desburocratizada, apesar de incompleta Ponte com o Banco s ´ E software livre – um grande diferencial em ambientes de Dados Proposta de corporativos Gram´tica XML a para SQL s Roda em mais plataformas do que Java (pelo menos a XML-RPC implementa¸˜o da Sun) ca Mais informa¸oes c˜ s ´ a E f´cil de estender (criar novos m´dulos) o s Vem com um mundo de funcionalidades j´ inclu´ a ıdo 5 / 33
  6. 6. XML Introdu¸˜o ca Fernando ´ E aquele encoding de texto que todo mundo conhece. Objetivos Python s Apesar de repetitivo, ´ de f´cil entendimento para os seres e a XML XML-RPC humanos. SQL s A complexidade fica nas aplica¸oes, j´ que a mensagem n˜o c˜ a a Motiva¸˜o ca cont´m inteligˆncia. e e Ponte com o Banco de Dados s Se utilizado um encoding de texto como UTF-8, deriva numa Proposta de mensagem praticamente universal. Gram´tica XML a para SQL s Pode significar qualquer coisa (ao mesmo tempo que n˜o a XML-RPC especifica o que significa). Mais informa¸oes c˜ s Apesar de suas desvantagens, sabemos que vai ficar. 6 / 33
  7. 7. XML-RPC Introdu¸˜o ca Fernando ´ E o meio de transporte escolhido para demonstrar a id´ia. e Objetivos Python s Poderia ter implementado esta ponte com sockets. Sim, mas: XML XML-RPC x Demoraria mais para implementar. Isto tem que ser f´cil! a SQL Motiva¸˜o ca Ponte com o Banco x N˜o ´ necess´rio mudar os designs de boa parte do a e a de Dados c´digo ao trocar o transporte. o Proposta de Gram´tica XML a x Teria que cuidar de v´rios aspectos que o XML-RPC faz a para SQL sozinho. XML-RPC Mais informa¸oes c˜ s ´ E um meio de transporte estupidamente f´cil de se a implementar. s ´ E simples. Essa simplicidade tem a cara do Python. 7 / 33
  8. 8. SQL Introdu¸˜o ca Fernando Indispens´vel: a Objetivos ´ s E uma linguagem funcional para manipula¸˜o de bancos de ca Python XML dados. XML-RPC SQL ´ s E um padr˜o de facto. a Motiva¸˜o ca s Possui certas incompatibilidades entre fornecedores, mas as Ponte com o Banco diferen¸as s˜o contorn´veis atrav´s da aderˆncia de padr˜es c a a e e o de Dados Proposta de (SQL92, SQL99, etc.) e de interfaces universalizadas (como Gram´tica XML a para SQL esta!) XML-RPC s Ainda n˜o d´ para abandonar os bancos de dados relacionais a a Mais informa¸oes c˜ para utilizar somente a orienta¸˜o a objeto: ca x Acaba-se criando pontes OO-relacionais. x Ocorre convers˜o de dados entre v´rios tipos diversos. a a x BDs relacionais simplesmente funcionam! Est˜o a´ a ı implementados h´ mais d´cadas, inclusive, que a pr´pria a e o OO. 8 / 33
  9. 9. Introdu¸˜o ca Motiva¸˜o ca Uma interface unica ´ com Bancos de Dados N˜o h´ gram´ticas a a a XML para SQL no W3C! SQL tem a cara do XML! Ponte com o Banco de Dados Motiva¸˜o ca Proposta de Gram´tica XML a para SQL XML-RPC Mais informa¸oes c˜ 9 / 33
  10. 10. Uma interface unica com Bancos de Dados ´ Introdu¸˜o ca s Criar especifica¸˜es para cada banco de dados ´ uma tarefa co e Motiva¸˜o ca Uma interface unica ´ penosa. com Bancos de Dados s Gerenciar as diferen¸as entre os engines no c´digo s´ com c o o N˜o h´ gram´ticas a a a XML para SQL no SQL ´ um trabalho de S´ e ısifo. W3C! SQL tem a cara do s Mesmo assim, configurar acesso a banco de dados ´ de certa e XML! forma complicado, e mudar isso mesmo que em Ponte com o Banco de Dados desenvolvimento gera tempo. Proposta de Gram´tica XML a s Manter SQL manualmente d´ chance a erros Hom´ricos. a e para SQL s O formato dos dados retornados ´ sempre peculiar a cada e XML-RPC linguagem. Tendo uma s´ maneira de retornar os dados o Mais informa¸oes c˜ permite que haja uma independˆncia total da e linguagem-cliente. 10 / 33
  11. 11. N˜o h´ gram´ticas XML para SQL no W3C! a a a Introdu¸˜o ca s No W3C, vive-se num tempo p´s-moderno em termos de o Motiva¸˜o ca Uma interface unica ´ programa¸˜o: os sistemas teoricamente n˜o possuem legado, ca a com Bancos de Dados tudo ´ tratado com mais e mais gram´ticas XML, movidas a e a N˜o h´ gram´ticas a a a XML para SQL no Web Semˆntica. a W3C! SQL tem a cara do s XML serviria para trocas entre dados, n˜o para a XML! processamento interno. Ponte com o Banco de Dados s Seria interessante como API de manipula¸˜o; n˜o ´ ` toa ca a ea Proposta de Gram´tica XML a que criaram-se facilidades como XML-RPC, SOAP, WSDL... para SQL s Um grande potencial de processamento remoto e distribu´ıdo XML-RPC n˜o est´ sendo utilizado. a a Mais informa¸oes c˜ s O ideal seria reescrever o SQL em XML, e “for¸ar” os c fabricantes a adotar este padr˜o (utopias mil!) a s Menos inconsistˆncias, menos retrabalho – hoje n˜o h´ e a a nenhuma vantagem inerente no SQL para fazer um Banco de Dados vender mais do que o outro. 11 / 33
  12. 12. SQL tem a cara do XML! Introdu¸˜o ca s O SQL foi criado numa ´poca sem as possibilidades e e Motiva¸˜o ca Uma interface unica ´ padr˜es da Web. o com Bancos de Dados s Provavelmente, se fosse criado hoje, adotaria uma gram´tica a N˜o h´ gram´ticas a a a XML para SQL no XML. W3C! s ´ E poss´ que seja ainda mais odiado. ıvel SQL tem a cara do XML! s Possibilidades interessantes para os fabricantes poderiam ter Ponte com o Banco de Dados surgido: criar queries com “desenhistas de XML”, ou Proposta de Gram´tica XML a derivando tabelas diretamente de nota¸oes como UML. c˜ para SQL s Para o sistema que vocˆ esteja criando, a quest˜o do banco e a XML-RPC de dados torna-se irrelevante. Mais informa¸oes c˜ 12 / 33
  13. 13. Introdu¸˜o ca Motiva¸˜o ca Ponte com o Banco de Dados Escolhi o PostgreSQL C´digo de conex˜o o a com BD Proposta de Gram´tica XML a para SQL Ponte com o Banco de Dados XML-RPC Mais informa¸oes c˜ 13 / 33
  14. 14. Escolhi o PostgreSQL Introdu¸˜o ca s Neste ponto utiliza-se um driver normal de banco de dados. Motiva¸˜o ca Escolhi um (pyPgSQL) que ´ bastante popular. e Ponte com o Banco de Dados s Tenha em mente que coisas como triggers, views e coisas do Escolhi o PostgreSQL gˆnero s˜o inerentes a cada banco de dados. e a C´digo de conex˜o o a com BD s A manuten¸˜o do banco de dados n˜o ´ abordada pela ca a e Proposta de apresenta¸˜o. Imagino que o bom administrador saiba ca Gram´tica XML a para SQL administrar seu banco de dados e tenha interfaces XML-RPC apropriadas para o mesmo. Mais informa¸oes c˜ s Nada impediria de extender a “gram´tica” XML para a a administra¸˜o do pr´prio BD; por´m a´ ´ que moram as ca o e ıe maiores incompatibilidades entre os BDs e, portanto, os maiores problemas. s Com o nosso exemplo de c´digo, bastaria adaptar duas ou o trˆs fun¸˜es `s sa´ e co a ıdas de drivers Python, e estaria pronto um novo “driver”. 14 / 33
  15. 15. C´digo de conex˜o com BD o a Introdu¸˜o ca Usando pyPgSQL: Motiva¸˜o ca Ponte com o Banco from pyPgSQL import libpq de Dados dbconn = libpq.PQconnectdb("host=dbserver Escolhi o PostgreSQL dbname=python user=pguser") C´digo de conex˜o o a ret = dbconn.query(sqlstream) com BD # ret ´ um objeto estilo ‘‘Resultset’’, e Proposta de Gram´tica XML a # com v´rias propriedades a para SQL # se acontecer um erro, acontece antes disso XML-RPC Mais informa¸oes c˜ 15 / 33
  16. 16. Introdu¸˜o ca Motiva¸˜o ca Ponte com o Banco de Dados Proposta de Gram´tica XML a para SQL Limita¸oes c˜ Tipos de Dados Recomend´veis a SELECT: exemplo Proposta de Gram´tica XML para SQL a SELECT: resultado INSERT UPDATE DELETE XML-RPC Mais informa¸oes c˜ 16 / 33
  17. 17. Limita¸˜es co Introdu¸˜o ca s O XML aceita qualquer nota¸˜o; o que equivaleria a ca Motiva¸˜o ca qualquer tipo de dados. Ponte com o Banco de Dados s O SQL n˜o – isso depende do fornecedor. a Proposta de Gram´tica XML a s Pelo menos alguns tipos de dados s˜o comuns entre os a para SQL fornecedores de BD; ent˜o nivela-se por baixo: temos a Limita¸oes c˜ Tipos de Dados n´meros inteiros, inteiros longos, n´meros decimais, datas, u u Recomend´veis a SELECT: exemplo booleanos e strings. SELECT: resultado s As datas podem ser representadas como inteiros longos, INSERT UPDATE baseados no conceito de epoch. DELETE s As implementa¸˜es de booleano variam largamente. Uma co XML-RPC conven¸˜o ´ necess´ria: sugiro 0 para falso e qualquer outro ca e a Mais informa¸oes c˜ valor para verdadeiro. s Os exemplos a seguir s˜o uma proposta do que ´ poss´ a e ıvel. 17 / 33
  18. 18. Tipos de Dados Recomend´veis a Introdu¸˜o ca Praticamente todos os bancos de dados suportam, de alguma Motiva¸˜o ca forma, estes tipos de dados: Ponte com o Banco de Dados s int Proposta de Gram´tica XML a s long para SQL Limita¸oes c˜ s string Tipos de Dados Recomend´veis a s dec SELECT: exemplo s bool SELECT: resultado INSERT UPDATE O restante s˜o especializa¸˜es que n˜o s˜o comuns ` grande a co a a a DELETE maioria de aplica¸˜es existentes. co XML-RPC Mais informa¸oes c˜ 18 / 33
  19. 19. SELECT: exemplo Introdu¸˜o ca <select> Motiva¸˜o ca <fields> Ponte com o Banco de Dados <field name="clientes.id" /> Proposta de <field name="clientes.nome" /> Gram´tica XML a <field name="clientes.nascimento" /> para SQL Limita¸oes c˜ <field name="endereco.nome" as="endereco" /> Tipos de Dados </fields> Recomend´veis a SELECT: exemplo <froms> SELECT: resultado <table name="clientes"> INSERT <inner_join table="enderecos" UPDATE on="clientes.endereco=enderecos.id" /> DELETE </table> XML-RPC </froms> Mais informa¸oes c˜ <wheres> <eq field="clientes.id"><int>3</int></eq> </wheres> </select> 19 / 33
  20. 20. SELECT: resultado Introdu¸˜o ca Esta ´ uma proposi¸˜o de sa´ a esta query. e ca ıda Motiva¸˜o ca Ponte com o Banco <result> de Dados <row> Proposta de <id><int>50</int></id> Gram´tica XML a para SQL <nome><string>Jo~o da Esquina</string></nome> a Limita¸oes c˜ <nascimento> Tipos de Dados Recomend´veis a <variant>18/11/1980</variant> SELECT: exemplo </nascimento> SELECT: resultado <endereco><string>Rua sem N´mero</string></endereco> u INSERT UPDATE </row> DELETE </result> XML-RPC Mais informa¸oes c˜ 20 / 33
  21. 21. INSERT Introdu¸˜o ca <insert into="clientes"> Motiva¸˜o ca <field name="id"><int>10</int></field> Ponte com o Banco de Dados <field name="nome"><string>Jo~o da Costa</string></field> a Proposta de </insert> Gram´tica XML a para SQL Limita¸oes c˜ Ou ent˜o um INSERT com um SELECT dentro: a Tipos de Dados Recomend´veis a SELECT: exemplo SELECT: resultado INSERT UPDATE DELETE XML-RPC Mais informa¸oes c˜ 21 / 33
  22. 22. INSERT (cont.) Introdu¸˜o ca <insert into="clientes"> Motiva¸˜o ca <fields> Ponte com o Banco de Dados <field name="id" /> Proposta de <field name="nome" /> Gram´tica XML a </fields> para SQL Limita¸oes c˜ <select> Tipos de Dados <fields> Recomend´veis a SELECT: exemplo <field name="id" /> SELECT: resultado <field name="nome" /> INSERT </fields> UPDATE <froms> DELETE <table name="clientes" /> XML-RPC </froms> Mais informa¸oes c˜ <wheres> <eq field="id"><int>15</int></eq> </wheres> </select> </insert> 22 / 33
  23. 23. UPDATE Introdu¸˜o ca <update table="clientes"> Motiva¸˜o ca <fields> Ponte com o Banco de Dados <field name="name"><string>Joao da Costa Proposta de Netto</string></field> Gram´tica XML a </fields> para SQL Limita¸oes c˜ <wheres> Tipos de Dados <eq field="id"><int>10</int></eq> Recomend´veis a SELECT: exemplo </wheres> SELECT: resultado </update> INSERT UPDATE DELETE XML-RPC Mais informa¸oes c˜ 23 / 33
  24. 24. DELETE Introdu¸˜o ca <delete table="clientes"> Motiva¸˜o ca <wheres> Ponte com o Banco de Dados <eq field="id"><int>10</int></eq> Proposta de </wheres> Gram´tica XML a </delete> para SQL Limita¸oes c˜ Tipos de Dados Recomend´veis a SELECT: exemplo SELECT: resultado INSERT UPDATE DELETE XML-RPC Mais informa¸oes c˜ 24 / 33
  25. 25. Introdu¸˜o ca Motiva¸˜o ca Ponte com o Banco de Dados Proposta de Gram´tica XML a para SQL XML-RPC Como funciona? E em c´digo? o (Servidor) XML-RPC E em c´digo? o (Cliente) No nosso caso, juntando tudo Mais informa¸oes c˜ 25 / 33
  26. 26. Como funciona? Introdu¸˜o ca s Primeiro, temos um servi¸o HTTP num servidor que c Motiva¸˜o ca responde numa porta TCP espec´ ıfica. Ponte com o Banco de Dados s Codifica-se as fun¸˜es nesse servidor.. co Proposta de Gram´tica XML a s Depois, registramos cada fun¸˜o que pode ser chamada por ca para SQL um cliente. XML-RPC Como funciona? s Um cliente inicia um processo que executa fun¸˜es naquele co E em c´digo? o (Servidor) servidor. E em c´digo? o s Executa-se e avalia o resultado. (Cliente) No nosso caso, juntando tudo Mais informa¸oes c˜ 26 / 33
  27. 27. E em c´digo? (Servidor) o Introdu¸˜o ca Este seria o c´digo de um suposto “server.py”. o Motiva¸˜o ca Ponte com o Banco def ola_mundo(): de Dados return "ola mundo-cliente!" Proposta de Gram´tica XML a para SQL import SimpleXMLRPCServer XML-RPC SimpleXMLRPCServer.allow_reuse_address = 1 Como funciona? server = SimpleXMLRPCServer(("127.0.0.1", 10000)) E em c´digo? o (Servidor) server.register_function(ola_mundo) E em c´digo? o server.serve_forever() # d´ para matar com C-c tranquilo a (Cliente) No nosso caso, juntando tudo Mais informa¸oes c˜ 27 / 33
  28. 28. E em c´digo? (Cliente) o Introdu¸˜o ca Este seria, ent˜o, um “client.py”. a Motiva¸˜o ca Ponte com o Banco import xmlrpclib de Dados s = xmlrpclib.Server("ip_do_servidor", 10000) Proposta de print s.ola_mundo() Gram´tica XML a para SQL XML-RPC Executando: Como funciona? E em c´digo? o $ python client.py (Servidor) E em c´digo? o "ola mundo-cliente!" (Cliente) No nosso caso, juntando tudo Mais informa¸oes c˜ 28 / 33
  29. 29. No nosso caso, juntando tudo Introdu¸˜o ca s O cliente acessa o servidor na porta 10000 no endere¸o IP c Motiva¸˜o ca desjado Ponte com o Banco de Dados s Chama a fun¸˜o execute, com um parˆmetro em XML ca a Proposta de Gram´tica XML a s O retorno vem em XML para SQL s Simples assim. Isso d´ margem a v´rias id´ias: a a e XML-RPC Como funciona? x Colocar uma ponte geradora de XML na E em c´digo? o (Servidor) aplica¸˜o-cliente. ca E em c´digo? o (Cliente) x Balancear a carga entre v´rios servidores XML-RPC. a No nosso caso, juntando tudo x Fazer uma ponte entre um servidor de objetos, que seria Mais informa¸oes c˜ o cliente nesta nossa solu¸˜o. ca 29 / 33
  30. 30. Introdu¸˜o ca Motiva¸˜o ca Ponte com o Banco de Dados Proposta de Gram´tica XML a para SQL XML-RPC Mais informa¸oes c˜ Esta id´ia j´ teve e a Mais informa¸˜es co implementa¸oes! c˜ O c´digo o That’s all folks! 30 / 33
  31. 31. Esta id´ia j´ teve implementa¸˜es! e a co Introdu¸˜o ca s XML-SQL Utility (XSU), da Oracle, que faz algo bem Motiva¸˜o ca parecido; por´m, ´ para o Oracle, e ´ mais voltado para e e e Ponte com o Banco de Dados extrair coisas do BD. Proposta de Gram´tica XML a s SQL Server exporta para XML tamb´m, mas n˜o ´ o caso. e a e para SQL s Bom artigo de como fazer isso para MySQL: XML-RPC http://www.kitebird.com/articles/mysql-xml.html. Mais informa¸oes c˜ Esta id´ia j´ teve e a s Existem iniciativas como o XPath que um dia ainda v˜oa implementa¸oes! c˜ O c´digo o implementar isso, pois j´ est˜o mesclando tudo na mesma a a That’s all folks! metodologia: http://weblog.infoworld.com/udell/2003/03/12.html. 31 / 33
  32. 32. O c´digo o Introdu¸˜o ca s O c´digo est´ dispon´ no endere¸o abaixo: o a ıvel c Motiva¸˜o ca Ponte com o Banco http://slowhome.org/ferhr/tchelinux/ de Dados Proposta de Gram´tica XML a s Sob licen¸a BSD. c para SQL s ´ E qualidade Alfa para Beta, ent˜o cuidado! a XML-RPC s Datas e outros tipos de dados aparecer˜o como <variant>, a Mais informa¸oes c˜ Esta id´ia j´ teve e a s´ para irritar. o implementa¸oes! c˜ O c´digo o s Com exce¸˜o do driver, ´ escrito do zero. ca e That’s all folks! s Demorou dois dias para fazer, bem a tempo da palestra (´ e verdade que um dia foi s´ debugs). o s Sacrifiquei a eficiˆncia e completude pela rapidez de e desenvolvimento. s Vem com uma pequena su´ de testes, onde exemplos s˜o ıte a disparados. s Aceito contribui¸˜es. co 32 / 33
  33. 33. That’s all folks! Introdu¸˜o ca So long and thanks for all the queries! Motiva¸˜o ca plan9ner@gmail.com Ponte com o Banco de Dados Proposta de Gram´tica XML a para SQL XML-RPC Mais informa¸oes c˜ Esta id´ia j´ teve e a implementa¸oes! c˜ O c´digo o That’s all folks! 33 / 33

×