5 рдорд┐рдирдЯ рдореЗрдВ BBS рдкрд░ DBSlayer рдкреНрд░реЙрдХреНрд╕реА рдпрд╛ MySQL рд╕реЗ JSON рднреЗрдЬрдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛



рд╢рд╛рдо рд╣реЛ рдЧрдИ рдереА, рдХреБрдЫ рдХрд░рдирд╛ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдкрд╛рдареЛрдВ рдХреЗ рдкреНрд░рдореБрдЦ рдиреЗ рдЖрд░рд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ ... рдпрд╣ рдкрдж рд╡рд┐рд╢реБрджреНрдз рд╢реИрдХреНрд╖рдгрд┐рдХ рд░реБрдЪрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕рдм рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ рдХрд┐ рдЬрдм рдЙрдирдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЧреНрд░рд╛рд╣рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдпрд╣ рдПрдХ рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдпрд╛ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдЖрдзрд╛рд░ MySQL рд╣реИред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ (PHP рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ, рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо JSON рдлреЙрд░реНрдо рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк MySQL рдХреЗ рд▓рд┐рдП рдПрдХ DBSlayer рдкреНрд░реЙрдХреНрд╕реА рд╣реИред рдЬреЛ рдХреЛрдИ рднреА рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рдореИрдВ рдЙрд╕реЗ рдирд╣реАрдВ рдмрддрд╛рддрд╛: рдореИрдВ рдиреНрдпреВ рдпреЙрд░реНрдХ рдЯрд╛рдЗрдореНрд╕ рдХреЗ рдмрд╛рдЙрд▓ рдореЗрдВ рдПрдмреНрд╕рдЯреНрд░реИрдХреНрд╢рди рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд▓реЛрдб рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдк code.nytimes.com/projects/dbslayer/wiki/WhyUseIt рдкрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред DBSlayer рдПрдХ JSON- рдЖрдзрд╛рд░рд┐рдд API рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ NodeJS рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░рд╛ рддрд░реАрдХрд╛ рднреА рдирд╣реАрдВ рд╣реИред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд BASH рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИред



рдЦреИрд░, рдореИрдВ рдЗрд╕ рднрдЯрдХрд╛рд╡ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛, рдФрд░ рдХрд╛рд░реНрдп, рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рд╣рд▓ рд╣реИ, рдХреЛрдИ рднрд╛рд░ рдирд╣реАрдВ рдФрд░ рдЙрддреНрдкрд╛рджрди рд╕рдорд╛рдзрд╛рди рдХреЗ рдЕрдиреНрдп рдЦреБрд╢рд┐рдпрд╛рдБред PHP рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдереЛрдбрд╝рд╛ рдердХ рдЧрдпрд╛ рд╣реИ, рдЖрддреНрдорд╛ рдиреЗ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд┐рдзрддрд╛ рдФрд░ рдХреБрдЫ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред рдореИрдВрдиреЗ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрд╢реАрд▓рддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде, BASH рдкрд░ рдПрдХ HTTP рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рд╕рд░рд▓ рдкрд░рдд рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдиреЗрдЯрдХреИрдЯ, рдмреИрд╢ рдкрд░ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рдПрдХ WEB рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╣рдм рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯ рднреА рдереЗред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓реЗрддреЗ рд╣реБрдП рдФрд░ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрддреЗ рд╣реБрдП, рд╣рдо рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдореЗрдВ рдмреИрд╢ рдШреБрдЯрдиреЗ рдкрд░ рдбреАрдмреАрдПрд╕рд▓реЗрдпрд░ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдПрдирд╛рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╢рдмреНрджреЛрдВ рд╕реЗ рд▓реЗрдХрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рддрдХ ...


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо mysql рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ JSON рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрдиреНрд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦреЗрдВрдЧреЗ:

cat ~/bin/mysql2json.sh #!/bin/bash sed -e 's/\t/\",\"/g' \ -e 's/^/\[\"/' \ -e 's/$/\"\],/' \ -e '1s/\(.*\)/\{\"fields\":\1\ \"data\":[/g' -e '$s/.$/\]\}/' \ | tr -d "\n" 


рдпрд╣ рдмрд╕ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 mysql -e "SELECT * FROM `mytable`" | ./mysql2json.sh {"fields":["field_1","field_2","field_3"],"data":[["1","2","3"],["4","5","6"],["7","8","9"]]} 


рдЕрдм рд╕рд░реНрд╡рд░ рдХреЛрдб рд╣реА, рдЬрд┐рд╕реЗ рд╣рдордиреЗ dbjs.sh рдлрд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рд╣реИ:
 #!/bin/bash :;while [ $? -eq 0 ] do. nc -vlp 8880 -c '( r=read; e=echo; $rabc; z=$r; while [ ${#z} -gt 2 ] do. $rz; done; f=`$e $b|sed 's/[^a-z0-9_.-]//gi'`; h="HTTP/1.0"; o="$h 200 OK\r\n"; c="Content"; m="mysql -ulol -ptrololo" m2j="~/bin/mysql2json.sh" $e "$o$c-Type: text/json"; $e; if [[ ( -n "$f" ) && ( "$f" != "favicon.ico" ) ]] then. $e "+ Connect to [$f]">&2; db=${f%.*}; tb=${f#*.}; if [ "$tb" = "$db" ] then $e `$m ${db:-test} -e "show tables" | $m2j`; else $e `$m ${db:-test} -e "select * from $tb" | $m2j`; fi; else $e `$m -e "show databases" | $m2j`; fi )'; done 


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╕ рдЗрддрдирд╛ рд╣реАред рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрддреЗ рд╣реИрдВ:
 [ bash: ./dbjs.sh listening on [any] 8880 ... 


рдЕрдЧрд▓рд╛, рд╣рдо рдХреЗрд╡рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рдкрд░, рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓рддрд╛ рд╣реИ:
 // http://127.0.0.1:8880 -     { fields: [ "Database" ], data: [ [ "information_schema" ], [ "test" ] ] } 


 // http://127.0.0.1:8880/test -      test { fields: [ "Tables_in_test" ], data: [ ["prods"], ["shops"], ["sp"], ["stat"] ] } 


 // http://127.0.0.1:8880/test.shops -    test.shops { "fields": [ "id", "name", "adress" ], "data": [ ["1","aaaaa",""], ["2","bbbbbbbbb",""], ["3","cccccccccccccccc","ccc"] ] } 


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╕рднреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреБрдирд╢реНрдЪ: рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП: рдХреНрдпреЛрдВ?, рдореИрдВ рддреБрд░рдВрдд рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛: рдкреНрд░рд╢рдВрд╕рдХ рдХреЗ рд▓рд┐рдПред рдЬреАрд╡рди рдореЗрдВ рдЖрдирдВрдж рд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдРрд╕реЗ рдЧреИрд░-рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

Source: https://habr.com/ru/post/In154191/


All Articles