Monday 28 August 2017

Forex Trading System Requirements


Forex Trading Reviews O que os recursos de negociação forex são importantes e porque conta e conta de carteira e informações de portfólio referem-se aos dados e opções de exibição associados à conta financeira e informações de transações de uma conta forex. Todos os melhores corretores forex atualizarão as informações da conta em tempo real, exibirão os saldos da conta e fornecerão relatórios e declarações de histórico. Embora a informação da conta e da carteira seja relativamente importante, é seguro assumir que a maioria dos corretores forex oferecem as características mais importantes. Um investidor que exige características específicas de relatórios de portfólio pode querer dar uma olhada mais difícil nas características desta categoria. Recursos de conta e de portfólio mais importantes Relatórios de histórico de contas 8211 Você pode criar relatórios ou exibir declarações de seu portfólio ou informações da conta. Download Statements 8211 Você pode baixar suas declarações de conta. Exportar dados 8211 Você pode exportar seus dados de portfólio ou conta. GainLoss 8211 Você pode executar relatórios de ganhos e perdas para o planejamento tributário. Status do Pedido e Saldo 8211 Você pode visualizar rapidamente suas posições de negociação atuais, abrir ordens e saldo da conta. Atualizações em tempo real 8211 A sua conta salva a atualização em tempo real. Pares de moedas cruzadas Os pares de moeda cruzada incluem moedas secundárias negociadas entre si e não contra o dólar dos EUA. Exemplos incluem EURJPY, EURGBP e CADJPY. Esta categoria representa outro conjunto de pares de moedas altamente negociados que os corretores mais confiáveis ​​oferecem. A categoria Cross Currency Pairs é especialmente importante para uma conta de negociação forex denominada em uma moeda diferente do dólar americano, ou para comerciantes mais avançados que exploram discrepâncias entre outras economias. As mais importantes peças de moeda cruzada possuem AUDJPY 8211 O corretor oferece a negociação no par de moedas do dólar australiano versus ienes japoneses. CADJPY 8211 O corretor oferece negociação no par de moedas do dólar canadense versus ienes japoneses. CHFJPY 8211 O corretor oferece negociação no par de moedas do Franco Suíço versus Yen Japonês. EURAUD 8211 O corretor oferece a negociação no par de moedas do Euro vs. Dólar Australiano. EURCHF 8211 O corretor oferece negociação no par de moedas do Euro vs. Franco Suíço. EURGBP 8211 O corretor oferece negociação no par de divisas Euro vs. British Pound. EURJPY 8211 O corretor oferece negociação no par de divisas Euro vs. Japonês Yen. GBPCHF 8211 O corretor oferece a negociação no par de moedas do Libra britânica versus Franco Suíço. Principais Pares de Moedas Os Pares de Moedas Principais são os pares de moeda mundiais mais importantes, mais negociados, disponíveis através de um corretor forex. Esses pares consistem em moedas das economias mais desenvolvidas do mundo 8217, incluindo Europa, Japão, Canadá e Austrália. Um par de moedas principais é criado quando uma dessas moedas é negociada contra o dólar americano. Exemplos incluem EURUSD e USDCAD. Major Currency Pairs é uma categoria importante porque esses pares representam os mercados de câmbio mais negociados e líquidos na negociação forex. Os recursos de par de moedas principais mais importantes AUDUSD 8211 O corretor oferece a negociação no par de moedas do dólar australiano versus o dólar norte-americano. EURUSD 8211 O corretor oferece a negociação no par de moeda do Euro vs. Dólar. GBPUSD 8211 O corretor oferece a negociação no par de moedas da Libra britânica versus dólar norte-americano. NZDUSD 8211 O corretor oferece negociação no dólar da Nova Zelândia versus o par de divisas do dólar norte-americano. USDCAD 8211 O corretor oferece a negociação no par de dólares do dólar norte-americano versus dólar canadense. USDCHF 8211 O corretor oferece negociação no par de moedas do dólar norte-americano versus par franco suíço. USDJPY 8211 O corretor oferece a negociação no par de dólares do dólar americano e do iene japonês. Trading Technology Trading Technology abrange toda a tecnologia que permite a execução de um comércio, bem como ferramentas para simplificar a negociação ou executar estratégias avançadas. A categoria Tecnologia de Negociação inclui um espectro de recursos, de alertas e cotações em tempo real para os recursos mais avançados, como negociação automatizada e pedidos condicionais. Trading Technology é uma das categorias mais importantes quando se considera um corretor forex porque a capacidade de executar uma estratégia escolhida é altamente importante quando forex trading. Recursos de tecnologia comercial mais importantes Alerts 8211 Você pode configurar alertas personalizados para seu portfólio. Automated Trading 8211 Você pode colocar trocas configurando triggers automatizados. Ordens condicionais 8211 Você pode fazer pedidos que, quando executados, desencadeiam ou cancelam imediatamente outro pedido. Interface customizável 8211 O layout e os recursos da plataforma de negociação podem ser personalizados e alterados. No Chart Trading 8211 Você pode usar as ferramentas de gráficos para realmente fazer negócios. Gráficos em tempo real 8211 As ferramentas de gráficos de atualização em tempo real estão disponíveis através do corretor. Cotações em tempo real 8211 Cotações de preços atualizadas estão disponíveis em tempo real. Atendimento ao Cliente e Suporte ao Atendimento ao Cliente e Suporte é a disponibilidade dos canais de suporte do forex broker8217s. Os corretores forex com o melhor suporte estão disponíveis durante todas as horas de negociação através de vários canais, incluindo bate-papo ao vivo, e-mail e telefone. Alguns dos principais corretores de Forex também possuem locais de varejo onde você pode falar pessoalmente com alguém. Suporte especialmente questões para o comércio on-line de forex porque os mercados de Forex comercializam 24 horas, exigindo acesso a suporte a todas as horas. Recursos de atendimento e suporte ao cliente mais importantes Email 8211 Você pode acessar o suporte ao cliente por e-mail. Live Chat 8211 Você pode acessar o suporte ao cliente por chat ao vivo. Telefone 8211 Você pode acessar o suporte ao cliente por telefone. Horário de negociação Suporte 8211 Você pode acessar o suporte ao cliente durante a maioria das horas de negociação. Mobile Trading Mobile Trading é a capacidade de acessar uma conta de negociação usando um dispositivo móvel. O Mobile Trading abrange a disponibilidade de aplicativos dedicados para uma variedade de dispositivos, a funcionalidade dos recursos no aplicativo móvel e como os usuários classificaram a aplicação. O comércio móvel continua a crescer em importância à medida que a qualidade das aplicações melhora para atender a demanda por ferramentas de negociação on-the-go de alto desempenho. Recursos comerciais mais importantes do mercado Android 8211 O corretor fornece um aplicativo para dispositivos Android. BlackBerry 8211 O corretor fornece um aplicativo para dispositivos BlackBerry. Criar Alertas 8211 Você pode criar alertas com um ou mais dos aplicativos comerciais móveis. Comentários favoráveis ​​da App Store 8211 Três ou mais estrelas foram premiadas com o aplicativo iPhone broker8217s de usuários na Apple App Store ou no Google Play. IPad 8211 O corretor fornece um aplicativo para iPad. IPhone 8211 O corretor fornece um aplicativo para o iPhone. Pesquisa móvel 8211 Os recursos da pesquisa estão disponíveis usando uma das aplicações móveis. Site móvel 8211 O corretor oferece um site móvel separado para acessar sua conta a partir de um navegador web móvel. Place Trades 8211 Você pode fazer negócios usando seu dispositivo móvel. Rastreamento de portfólio 8211 Você pode acompanhar seu portfólio usando um dispositivo móvel. Streaming Quotes 8211 As citações de streaming em dispositivos móveis estão disponíveis. A pesquisa é o recurso que um corretor forex fornece aos seus clientes para ajudá-los a tomar decisões e entender a atividade do mercado. A pesquisa fornecida pelos melhores corretores forex inclui recursos avançados de gráficos, pesquisa de terceiros, relatórios de pesquisa e comentários de mercado. O comércio de Forex pode ser altamente orientado por computador, e alguns corretores de Forex oferecem aos comerciantes acesso a dados históricos para que eles possam testar as estratégias antes de alocar dinheiro real. A pesquisa é uma categoria importante para os comerciantes que estão procurando ajuda na tomada de decisões, bem como comerciantes independentes que estão buscando confirmação em uma troca ou uma segunda opinião. Alguns dos corretores mais auto-dirigidos oferecem menos serviços de pesquisa porque atendem a comerciantes mais avançados que pagam pela pesquisa de terceiros. Recursos de pesquisa mais importantes Gráficos 8211 Você tem acesso a gráficos para que você possa realizar pesquisas sobre produtos de investimento. Dados históricos 8211 O corretor dá acesso aos dados da taxa de câmbio histórica. Comentário de mercado 8211 Você tem acesso a comentários de mercado de especialistas externos. Notícias 8211 Você tem acesso a notícias do mercado diário e atualizações de serviços de terceiros. Relatórios de pesquisa 8211 O corretor fornece vários relatórios de pesquisa. Plataformas Trading Plataformas cobre as diferentes plataformas de software disponíveis para negociação forex fornecido pelo corretor. As plataformas de negociação podem variar de acordo com as necessidades de um trader8217s e muitas vezes são categorizadas como uma plataforma padrão ou profissional. Plataformas adicionais incluem plataformas móveis para executar negócios em qualquer lugar e plataformas virtuais para testar estratégias sem arriscar dinheiro. Plataformas de negociação é uma categoria importante se um comerciante estiver procurando por um corretor de forex que possa satisfazer as necessidades do comerciante8217s à medida que eles mudam. O mais importante recurso de plataforma comercial Mobile 8211 O corretor oferece uma plataforma para executar trades em um dispositivo móvel. Profissional 8211 O corretor oferece vários níveis de plataforma, incluindo uma plataforma profissional. Padrão 8211 O corretor oferece vários níveis de plataforma, incluindo uma plataforma padrão. Negociação virtual 8211 O corretor oferece uma conta virtual para os clientes praticarem operações sem arriscar dinheiro real. Ofertas introdutórias Os corretores Forex muitas vezes oferecem promoções para atrair um potencial cliente. Exemplos de incentivos incluem ofertas introdutórias para abrir uma conta e programas de referência de clientes. Outros oferecem demonstrações comerciais gratuitas para que os comerciantes possam praticar o comércio forex antes de se comprometer com o corretor. Os incentivos não são considerados muito importantes porque eles geralmente não estão relacionados aos serviços reais do corretor, mas pode ser bom que alguns clientes estejam conscientes dos potenciais bônus, pois tomam uma decisão entre dois corretores forex. A oferta introdutória mais importante apresenta o Free Demo 8211 Você pode acessar uma demo de negociação gratuita para que você possa tentar uma das plataformas de negociação. Programa de Referência 8211 Você pode ser recompensado por se referir um amigo ao corretor. Oferta especial 8211 Ofertas especiais para novos comerciantes que abrem uma conta estão disponíveis. Outros produtos de investimento Outros produtos de investimento consiste em outros produtos de investimento que um corretor forex disponibiliza para que alguém possa negociar. Outros produtos de investimento incluem ações, futuros, opções e CFDs. Esta é uma categoria menos importante, porque a maioria dos comerciantes forex são altamente especializados, mas pode ser uma categoria mais importante para comerciantes profissionais com experiência em vários produtos. Produtos de investimento mais comuns CFDs 8211 O corretor fornece outros instrumentos liquidados como Contrato de Diferença de Futuros 8211 O corretor oferece a negociação de alguns produtos de futuros. Opções 8211 O corretor oferece a troca de alguns produtos de opções. Ações 8211 O corretor fornece a negociação de algumas ações. Trading Education Education é todos os recursos que um corretor de Forex on-line fornece para ajudar seus clientes a aprender sobre o comércio forex e navegar na plataforma. Um corretor forex que se destaca na categoria Formação Educacional oferece regularmente webinars e vídeos para que os comerciantes possam avançar rapidamente, aprender novos conceitos na negociação forex e se acostumar com a plataforma broker8217s. Além disso, os melhores corretores forex fornecem uma excelente comunidade comercial para facilitar a troca de idéias comerciais. A educação é menos importante para um investidor avançado, mas um novato se beneficia muito dos cursos e webinars oferecidos pela maioria dos corretores forex. Os recursos de educação comercial mais importantes Cursos 8211 Você pode acessar os cursos de negociação ou de investimento educacional do corretor. Glossário 8211 Um glossário de termos de investimento importantes é fornecido pelo corretor. Seminários ao vivo 8211 Você pode participar de seminários em tempo real em todo o país a partir do corretor. Trader Community 8211 Você tem acesso a uma comunidade on-line para ter discussões e compartilhar conselhos com outros comerciantes. Vídeos 8211 Você pode visualizar vídeos de treino na plataforma broker8217s. Webinars 8211 Webinars estão disponíveis para ajudá-lo a aprender sobre produtos de investimento. Todos Forex Trading ReviewsForex Trading FXCM Um corretor de Forex líder O que é Forex Forex é o mercado onde todas as moedas mundiais trocam. O mercado forex é o maior e mais líquido mercado do mundo, com um volume de negócios diário médio superior a 5,3 trilhões. Não há troca central, pois ele troca no balcão. A negociação de Forex permite que você compre e venda moedas, semelhante ao estoque, exceto você pode fazê-lo 24 horas por dia, cinco dias por semana, você tem acesso à negociação de margem e você ganha exposição aos mercados internacionais. A FXCM é uma corretora de Forex líder. Execução justa e transparente Desde 1999, a FXCM estabeleceu para criar a melhor experiência de negociação on-line no mercado. Nós fomos pioneiros no modelo de execução forex do No Deal, fornecendo uma execução competitiva e transparente para nossos comerciantes. Atendimento ao cliente premiado Com educação de negociação de topo e ferramentas poderosas, orientamos milhares de comerciantes através do mercado de câmbio, com atendimento ao cliente 247. Descubra a vantagem da FXCM. Spreads médios: os spreads médios ponderados no tempo são derivados de preços negociáveis ​​na FXCM de 1 de julho de 2016 a 30 de setembro de 2016. Os spreads são variáveis ​​e estão sujeitos a atrasos. Os números de propagação são apenas para fins informativos. A FXCM não é responsável por erros, omissões ou atrasos ou por ações que dependem dessas informações. Live Spreads Widget: os spreads dinâmicos em tempo real são os melhores preços disponíveis da FXCMs. Quando os spreads estáticos são exibidos, os números são médias ponderadas no tempo derivadas de preços negociáveis ​​na FXCM de 1 de julho de 2016 a 30 de setembro de 2016. Os spreads exibidos estão disponíveis nas contas baseadas em comissões do Standard and Active Trader. Os spreads são variáveis ​​e estão sujeitos a atrasos. Os números de propagação são apenas para fins informativos. A FXCM não é responsável por erros, omissões ou atrasos, ou por ações que dependem dessas informações. Mini Contas: as mini-contas oferecem 21 pares de moedas e o padrão para a execução da Negociação, onde as estratégias de arbitragem de preços são proibidas. A FXCM determina, a seu exclusivo critério, o que abrange uma estratégia de arbitragem de preços. As mini contas oferecem spreads mais preços de marcação. Os spreads são variáveis ​​e estão sujeitos a atrasos. As mini-contas que utilizam estratégias proibidas ou com equidade ultrapassando 20.000 CCY podem ser alteradas para a execução da No Deal. Veja Riscos de Execução. Software de lançamento de serviço ao cliente Plataformas populares Sobre a FXCM Contas de Forex Mais recursos Aviso de investimento de alto risco: a negociação de divisas e contratos para diferenças de margem traz um alto nível de risco e pode não ser adequado para todos os investidores. Existe a possibilidade de que você possa sustentar uma perda em excesso de seus fundos depositados e, portanto, você não deve especular com o capital que não pode perder. Antes de decidir trocar os produtos oferecidos pela FXCM, você deve considerar cuidadosamente seus objetivos, situação financeira, necessidades e nível de experiência. Você deve estar ciente de todos os riscos associados à negociação na margem. A FXCM fornece conselhos gerais que não levam em consideração seus objetivos, situação financeira ou necessidades. O conteúdo deste site não deve ser interpretado como um conselho pessoal. A FXCM recomenda que você procure o conselho de um consultor financeiro separado. Clique aqui para ler o aviso de risco total. A FXCM é uma negociante de câmbio mercantil e varejista da Futures Commission com a Commodity Futures Trading Commission e é membro da National Futures Association. NFA 0308179 Forex Capital Markets, LLC (FXCM LLC) é uma subsidiária operacional do grupo de empresas FXCM (coletivamente, o Grupo FXCM). Todas as referências neste site para FXCM se referem ao Grupo FXCM. Tenha em atenção que as informações contidas neste site destinam-se apenas a clientes de varejo, e certas representações aqui contidas podem não ser aplicáveis ​​aos Participantes de Contrato Elegíveis (ou seja, clientes institucionais), conforme definido na Lei de Câmbio de Mercadorias, seção 1 (a) (12). Direitos autorais copiam 2017 Forex Capital Markets. Todos os direitos reservados. 55 Water St. 50th Floor, Nova Iorque, NY 10041 EUA

Saturday 26 August 2017

Forex Broker Weekend Trading


Como negociar as lacunas do Fim de semana FOREX Mais artigos O comércio de gap de fim de semana é uma estratégia popular com câmbio, ou Forex, comerciantes. Embora tecnicamente aberto 24 horas por dia, a negociação Forex cierra na tarde de sexta-feira e não reabre até domingo à noite. Muitos anúncios de notícias e eventos mundiais que afetam os preços das moedas podem acontecer entre as sessões de negociação. Os investidores de Forex negociam o hiato do fim de semana esperando que o preço de abertura do domingo 8217 volte ao preço de fechamento de sexta-feira8217s. Acesse sua conta de negociação Forex ou abra uma conta se você não possui uma. Puxe a lista de moedas e selecione um par altamente negociado. O euro-EUA. Dólar (EURUSD) é o par mais popular para o comércio, seguido de perto pelo dólar dos EUA - iene japonês (USDJPY) e da libra esterlina britânica - U. S. Dólar (GPBUSD). Dos três, o EURUSD é o mais líquido e menos volátil, tornando-se um excelente par de moedas para trocar durante o intervalo de fim-de-semana. Puxe o preço de fechamento para 5 p. m. (EST) Sexta-feira para o par de moedas que você seleciona. Usando o par USDJPY como exemplo, diga o preço de fechamento na sexta-feira às 5 p. m. Era 82,00. Registre esta informação em seu caderno. Você usará este preço de fechamento para determinar se a diferença pode ser negociada quando o mercado de Tóquio abrir no domingo às 7 da. m. HUSA. Decida o tamanho da lacuna antes de inserir uma troca. Por exemplo, se você quiser trocar um fosso de 1 por cento no USDJPY, você procurará o preço de abertura para a abertura em torno de 82.80 (82.00 x 1 por cento .80) ou intervalo para baixo para 81.20. Você pode ajustar a porcentagem maior ou menor para se adequar à sua tolerância ao risco. Aguarde que o mercado de Tóquio seja aberto às 7 da. m. Domingo. Digite uma negociação se a taxa de USDJPY de abertura for de pelo menos 82.80 ou 81.20. Use o preço de fechamento das sextas-feiras de 82,00 como seu objetivo de lucro. Por exemplo, se o mercado aberto abrindo em 82.80, você venderia o par de moedas e procuraria fechar o comércio quando o preço atingir 82.00 se o mercado abrir às 81.20, você comprará o par de moedas e fechará o comércio quando o preço Atinge 82,00. Mantenha o comércio aberto até que o espaço seja preenchido ou se o gráfico monetário indicar que a lacuna continuará a se expandir. Itens que você precisará da conta de negociação Forex em linha Use indicadores de gráfico adicionais para ajudar a determinar se você deve manter o comércio aberto após o preenchimento da lacuna inicial ou fechar o comércio. Embora o mercado de Sydney, Austrália, Forex abra às 6 da. m. Domingo (EST), é muito negociado para apoiar a estratégia de comércio de lacunas de fim-de-semana. Aguarde que o mercado de Tóquio abra uma hora depois para obter um melhor volume comercial. É um logotipo BBB BBB calculado (Better Business Bureau) Cópia de direitos autorais Zacks Investment Research No centro de tudo o que fazemos é um forte compromisso com pesquisas independentes e compartilhando suas descobertas lucrativas com os investidores. Essa dedicação para oferecer aos investidores uma vantagem comercial levou à criação do nosso comprovado sistema de classificação de estoque Zacks Rank. Desde 1986 quase triplicou o SampP 500 com um ganho médio de 26 por ano. Esses retornos cobrem um período de 1986 a 2011 e foram examinados e comprovados por Baker Tilly, uma empresa de contabilidade independente. Visite o desempenho para obter informações sobre os números de desempenho exibidos acima. Os dados da NYSE e da AMEX são pelo menos 20 minutos atrasados. Os dados do NASDAQ são pelo menos 15 minutos atrasados. Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex Forex O mercado forex é o maior e mais líquido mercado do mundo, com um volume de negócios diário médio superior a 5,3 trilhões. Não há troca central, pois ele troca no balcão. A negociação de Forex permite que você compre e venda moedas, semelhante ao estoque de negociação, exceto você pode fazê-lo 24 horas por dia, cinco dias por semana, você tem acesso à negociação de margem e você ganha exposição aos mercados internacionais. A FXCM é uma corretora de Forex líder. Execução justa e transparente Desde 1999, a FXCM estabeleceu para criar a melhor experiência de negociação on-line no mercado. Nós fomos pioneiros no modelo de execução forex do No Deal, fornecendo uma execução competitiva e transparente para nossos comerciantes. Atendimento ao cliente premiado Com educação de negociação de topo e ferramentas poderosas, orientamos milhares de comerciantes através do mercado de câmbio, com atendimento ao cliente 247. Descubra a vantagem FXCM. Spreads médios: os spreads médios ponderados no tempo são derivados de preços negociáveis ​​na FXCM de 1 de julho de 2016 a 30 de setembro de 2016. Os spreads são variáveis ​​e estão sujeitos a atrasos. Os números de propagação são apenas para fins informativos. A FXCM não é responsável por erros, omissões ou atrasos ou por ações que dependem dessas informações. Live Spreads Widget: spreads dinâmicos em tempo real são os melhores preços disponíveis da FXCMs No Dealing Desk execução. Quando os spreads estáticos são exibidos, os números são médias ponderadas no tempo derivadas de preços negociáveis ​​na FXCM de 1 de julho de 2016 a 30 de setembro de 2016. Os spreads exibidos estão disponíveis nas contas baseadas em comissões Standard and Active Trader. Os spreads são variáveis ​​e estão sujeitos a atrasos. Os números de propagação são apenas para fins informativos. A FXCM não é responsável por erros, omissões ou atrasos, ou por ações que dependem dessas informações. Mini Contas: Mini contas oferecem 21 pares de moedas e inadimplentes para a execução da Negociação, onde as estratégias de arbitragem de preços são proibidas. A FXCM determina, a seu exclusivo critério, o que abrange uma estratégia de arbitragem de preços. As mini contas oferecem spreads mais preços de marcação. Os spreads são variáveis ​​e estão sujeitos a atrasos. As mini-contas que utilizam estratégias proibidas ou com equidade ultrapassando 20.000 CCY podem ser alteradas para a execução da No Deal. Veja Riscos de Execução. Software de lançamento de serviço ao cliente Plataformas populares Sobre as contas de Forex da FXCM Mais recursos Aviso de investimento de alto risco: a negociação de divisas e contratos para diferenças de margem traz um alto nível de risco e pode não ser adequado para todos os investidores. Existe a possibilidade de que você possa sustentar uma perda em excesso de seus fundos depositados e, portanto, você não deve especular com o capital que não pode perder. Antes de decidir trocar os produtos oferecidos pela FXCM, você deve considerar cuidadosamente seus objetivos, situação financeira, necessidades e nível de experiência. Você deve estar ciente de todos os riscos associados à negociação na margem. A FXCM fornece conselhos gerais que não levam em consideração seus objetivos, situação financeira ou necessidades. O conteúdo deste site não deve ser interpretado como um conselho pessoal. A FXCM recomenda que você procure o conselho de um consultor financeiro separado. Clique aqui para ler o aviso de risco total. A FXCM é uma negociante de câmbio mercantil e varejista registrada da Futures Commission com a Commodity Futures Trading Commission e é membro da National Futures Association. NFA 0308179 Forex Capital Markets, LLC (FXCM LLC) é uma subsidiária operacional do grupo de empresas FXCM (coletivamente, o Grupo FXCM). Todas as referências neste site para FXCM se referem ao Grupo FXCM. Tenha em atenção que as informações contidas neste site destinam-se apenas a clientes de varejo e certas representações aqui contidas podem não ser aplicáveis ​​aos Participantes de Contrato Elegíveis (ou seja, clientes institucionais) conforme definido na Lei de Câmbio de Mercadorias, seção 1 (a) (12). Direitos autorais copiam 2017 Forex Capital Markets. Todos os direitos reservados. 55 Water St. 50th Floor, Nova Iorque, NY 10041 EUA

Friday 25 August 2017

Mysql Moving Average Example


Exemplo do Hadoop: Olá mundo com Java, porco, colméia, Flume, Fuse, Oozie e Sqoop com Informix, DB2 e MySQL. Há muita emoção sobre Big Data e muita confusão para ir com ele. Este artigo fornece uma definição de trabalho do Big Data e, em seguida, funciona através de uma série de exemplos para que você possa ter uma compreensão em primeira mão de algumas das capacidades do Hadoop, a principal tecnologia de código aberto no domínio Big Data. Especificamente, vamos nos concentrar nas seguintes questões. O que é Big Data, Hadoop, Sqoop, Hive e Porco, e por que há muita excitação neste espaço? Como Hadoop se relaciona com o IBM DB2 e o Informix? Essas tecnologias funcionam juntas? Como posso começar com Big Data? Exemplos que são executados em um único PC Para o super impaciente, se você já pode definir o Hadoop e deseja obter o direito de trabalhar nos exemplos de código, então faça o seguinte. Ative sua instância do Informix ou do DB2. Baixe a imagem do VMWare no site Cloudera e aumente a configuração da RAM da máquina virtual para 1.5 GB. Ir para a seção que contém os exemplos de código. Existe uma instância MySQL integrada na imagem VMWare. Se você estiver fazendo os exercícios sem conectividade de rede, use os exemplos do MySQL. Para todos os outros, continue lendo. O que é Big Data Big Data é grande em quantidade, é capturado em uma taxa rápida, e é estruturado ou não estruturado, ou alguma combinação do acima. Esses fatores tornam Big Data difícil de capturar, minar e gerenciar usando métodos tradicionais. Há tanto hype nesse espaço que poderia haver um debate alargado apenas sobre a definição de dados importantes. A utilização da tecnologia Big Data não está restrita a grandes volumes. Os exemplos neste artigo usam pequenas amostras para ilustrar as capacidades da tecnologia. A partir do ano de 2012, os clusters que são grandes estão na faixa de 100 Petabyte. Os grandes dados podem ser estruturados e desestruturados. Os bancos de dados relacionais tradicionais, como o Informix e o DB2, oferecem soluções comprovadas para dados estruturados. Via extensibilidade, eles também gerenciam dados não estruturados. A tecnologia Hadoop traz novas e mais acessíveis técnicas de programação para trabalhar em grandes armazéns de dados com dados estruturados e não estruturados. Por que toda a emoção Existem muitos fatores que contribuem para o hype em torno de Big Data, incluindo o seguinte. Trazendo computação e armazenamento juntos em hardware de commodities: o resultado é uma velocidade ardente a baixo custo. Desempenho de preços: a grande tecnologia de dados da Hadoop oferece economia significativa de custos (pense em um fator de aproximadamente 10) com melhorias de desempenho significativas (novamente, fator de reflexão de 10). Sua milhagem pode variar. Se a tecnologia existente pode ser tão drasticamente derrotada, vale a pena examinar se Hadoop pode complementar ou substituir aspectos da sua arquitetura atual. Escalabilidade linear: toda tecnologia paralela faz reivindicações sobre a ampliação. O Hadoop possui escalabilidade genuína, uma vez que a última versão está expandindo o limite no número de nós para além de 4.000. Acesso total a dados não estruturados: um armazenamento de dados altamente escalável com um bom modelo de programação paralela, o MapReduce, tem sido um desafio para o setor há algum tempo. O modelo de programação Hadoops não resolve todos os problemas, mas é uma solução forte para muitas tarefas. Distribuições de Hadoop: IBM e Cloudera Um dos pontos de confusão é: Onde posso obter software para o Big Data? Os exemplos neste artigo são baseados na distribuição gratuita de Cloudera de Hadoop chamada CDH (para distribuição de Cloudera, incluindo Hadoop). Isso está disponível como uma imagem VMWare no site da Cloudera. A IBM anunciou recentemente que está transportando sua grande plataforma de dados para ser executada no CDH. O termo tecnologia disruptiva é muito usado demais, mas neste caso pode ser apropriado. O que é o Hadoop A seguir, existem várias definições do Hadoop, cada uma visando um público diferente na empresa. Para os executivos: Hadoop é um projeto de software de código aberto Apache para obter o valor da incrível variedade de dados de vários dados sobre sua organização. Use os dados em vez de jogar a maior parte dele. Para os gerentes técnicos: um conjunto de softwares de código aberto que minam o BigData estruturado e desestruturado sobre sua empresa. Integra-se com o seu ecossistema de Business Intelligence existente. Legal: um conjunto de software de código aberto que é embalado e suportado por vários fornecedores. Engenharia: um maciço paralelo, compartilhado nada, mapa baseado em Java, reduz o ambiente de execução. Pense centenas a milhares de computadores trabalhando no mesmo problema, com resiliência de falha embutida. Projetos no ecossistema Hadoop fornecem carregamento de dados, idiomas de nível superior, implantação automática de nuvem e outras capacidades. Segurança: um pacote de software protegido com Kerberos. Quais são os componentes do Hadoop O projeto Apache Hadoop possui dois componentes principais, a loja de arquivos chamada Sistema de arquivos distribuídos Hadoop (HDFS) e a estrutura de programação denominada MapReduce. Existem vários projetos de apoio que utilizam HDFS e MapReduce. Este artigo fornecerá um resumo e encorajará você a obter o livro OREily Hadoop The Definitive Guide, 3rd Edition, para obter mais detalhes. As definições abaixo são destinadas a fornecer apenas antecedentes suficientes para você usar os exemplos de código que se seguem. Este artigo é realmente para você começar com a experiência prática com a tecnologia. Este é um artigo de instruções mais do que um artigo do que é ou vamos discutir. HDFS. Se você quiser que 4000 computadores funcionem em seus dados, então você melhorará seus dados em 4000 computadores. HDFS faz isso por você. HDFS tem algumas partes móveis. Os Datanodes armazenam seus dados e o Namenode mantém registro de onde o material está armazenado. Há outras peças, mas você tem o suficiente para começar. MapReduce. Este é o modelo de programação para o Hadoop. Existem duas fases, não surpreendentemente chamadas de Mapa e Redução. Para impressionar seus amigos, diga-lhes, há um tipo aleatório entre a fase Mapa e Reduzir. O JobTracker gerencia os 4000 componentes do seu trabalho MapReduce. Os TaskTrackers recebem pedidos do JobTracker. Se você gosta de Java, então codifique em Java. Se você gosta de SQL ou outros idiomas que não são Java você ainda está com sorte, você pode usar um utilitário chamado Hadoop Streaming. Hadoop Streaming. Um utilitário para habilitar o código MapReduce em qualquer idioma: C, Perl, Python, C, Bash, etc. Os exemplos incluem um mapeador Python e um redutor AWK. Hive e Hue. Se você gosta de SQL, ficará encantado ao saber que você pode escrever SQL e ter o Hive convertê-lo em um trabalho MapReduce. Não, você não obtém um ambiente ANSI-SQL completo, mas você obtém 4000 notas e escalabilidade multi-Petabyte. O Hue oferece uma interface gráfica baseada no navegador para fazer o seu trabalho no Hive. Porco. Um ambiente de programação de nível superior para fazer codificação MapReduce. A língua do porco é chamada de latim do porco. Você pode achar que as convenções de nomenclatura são pouco convencionais, mas você obtém incríveis preços de desempenho e alta disponibilidade. Sqoop. Fornece transferência bidirecional de dados entre o Hadoop e seu banco de dados relacional favorito. Oozie. Gerencia o fluxo de trabalho Hadoop. Isso não substitui o seu agendador ou a ferramenta BPM, mas fornece if-then-else ramificação e controle dentro de seus trabalhos Hadoop. HBase. Uma loja de valores-chave super escalável. Isso funciona muito como um hash-map persistente (para o dicionário python fans think). Não é um banco de dados relacional apesar do nome HBase. FlumeNG. Um carregador em tempo real para transmitir seus dados no Hadoop. Ele armazena dados em HDFS e HBase. Você quer começar com o FlumeNG, o que melhora o canal original. Whirr. Cloud provisionamento para Hadoop. Você pode iniciar um cluster em apenas alguns minutos com um arquivo de configuração muito curto. Mahout. Aprendizagem de máquinas para Hadoop. Usado para análises preditivas e outras análises avançadas. Fusível . Faz com que o sistema HDFS se pareça com um sistema de arquivos regular para que você possa usar ls, rm, cd e outros em HDFS data Zookeeper. Usado para gerenciar a sincronização para o cluster. Você não estará trabalhando muito com o Zookeeper, mas está trabalhando duro para você. Se você acha que precisa escrever um programa que usa o Zookeeper, você é muito, muito, inteligente e poderia ser um comitê para um projeto Apache, ou você está prestes a ter um dia muito ruim. A Figura 1 mostra os principais pedaços de Hadoop. Figura 1. Arquitetura Hadoop HDFS, a camada inferior, fica em um cluster de hardware de commodities. Servidores montados em rack simples, cada um com CPUs núcleo 2-Hex, 6 a 12 discos e ram 32 gig. Para um trabalho de redução de mapa, a camada de mapeador lê dos discos a uma velocidade muito alta. O mapeador emite pares de valores-chave que são classificados e apresentados ao redutor, e a camada redutora resume os pares chave-valor. Não, você não precisa resumir, você pode realmente ter um trabalho de redução de mapa que possui apenas mapeadores. Isso deve tornar-se mais fácil de entender quando chegar ao exemplo de python-awk. Como o Hadoop se integra com minha infraestrutura Informix ou DB2, o Hadoop se integra muito bem com seus bancos de dados Informix e DB2 com o Sqoop. O Sqoop é a principal implementação de código aberto para mover dados entre o Hadoop e bancos de dados relacionais. Ele usa o JDBC para ler e escrever Informix, DB2, MySQL, Oracle e outras fontes. Existem adaptadores otimizados para vários bancos de dados, incluindo Netezza e DB2. Começando: Como executar exemplos simples de Hadoop, Hive, Pig, Oozie e Sqoop Você terminou com apresentações e definições, agora é hora das coisas boas. Para continuar, você precisará baixar o VMWare, caixa virtual ou outra imagem do site Cloudera e começar a fazer MapReduce. A imagem virtual assume que você possui um computador de 64 bits e um dos ambientes de virtualização populares. A maioria dos ambientes de virtualização tem um download gratuito. Quando você tenta inicializar uma imagem virtual de 64 bits, você pode receber queixas sobre as configurações da BIOS. A Figura 2 mostra a alteração necessária no BIOS, neste caso em um Thinkpad8482. Tenha cuidado ao fazer alterações. Alguns pacotes de segurança corporativa exigirão um código de acesso após uma alteração do BIOS antes que o sistema seja reiniciado. Figura 2. Configurações do BIOS para um convidado virtual de 64 bits Os grandes dados usados ​​aqui são bastante pequenos. O objetivo é não fazer com que seu laptop se incendie de uma moagem em um arquivo maciço, mas para mostrar-lhe fontes de dados que são interessantes, e mapear trabalhos que respondem questões significativas. Baixe a imagem virtual Hadoop É altamente recomendável que você use a imagem Cloudera para executar esses exemplos. Hadoop é uma tecnologia que resolve problemas. A embalagem de imagens da Cloudera permite que você se concentre nas questões dos grandes dados. Mas se você decidir montar todas as peças você mesmo, Hadoop tornou-se o problema e não a solução. Baixe uma imagem. A imagem CDH4, a última oferta está disponível aqui: imagem CDH4. A versão anterior, CDH3, está disponível aqui: imagem CDH3. Você tem sua escolha de tecnologias de virtualização. Você pode baixar um ambiente de virtualização gratuito do VMWare e outros. Por exemplo, vá para o vmware e baixe o vmware-player. Seu laptop provavelmente está executando o Windows para que você baixe o vmware-player para o Windows. Os exemplos neste artigo estarão usando o VMWare para esses exemplos e executando o Ubuntu Linux usando tar em vez de winzip ou equivalente. Uma vez baixado, untarunzip da seguinte maneira: tar - zxvf cloudera-demo-vm-cdh4.0.0-vmware. tar. gz. Ou, se você estiver usando o CDH3, use o seguinte: tar - zxvf cloudera-demo-vm-cdh3u4-vmware. tar. gz O Unzip geralmente funciona em arquivos tar. Depois de descompactar, você pode ativar a imagem da seguinte maneira: vmplayer cloudera-demo-vm. vmx. Você agora terá uma tela que se parece com o que é mostrado na Figura 3. Figura 3. Imagem virtual Cloudera O comando vmplayer mergulha diretamente e inicia a máquina virtual. Se você estiver usando CDH3, então você precisará desligar a máquina e alterar as configurações da memória. Use o ícone do botão de energia ao lado do relógio na parte inferior do meio da tela para desligar a máquina virtual. Você então possui acesso de edição às configurações da máquina virtual. Para CDH3, o próximo passo é supercarregar a imagem virtual com mais RAM. A maioria das configurações só pode ser alterada com a máquina virtual desligada. A Figura 4 mostra como acessar a configuração e aumentar a RAM alocada para mais de 2GB. Figura 4. Adicionando RAM à máquina virtual Como mostrado na Figura 5, você pode alterar a configuração de rede para ponte. Com esta configuração, a máquina virtual terá seu próprio endereço IP. Se isso criar problemas na sua rede, então você pode opcionalmente usar o NAT (Network Address Translation). Você estará usando a rede para se conectar ao banco de dados. Figura 5. Alterando as configurações de rede para ponte Você está limitado pela RAM no sistema host, então não tente alocar mais RAM do que o que existe na sua máquina. Se o fizer, o computador funcionará muito devagar. Agora, no momento em que você está esperando, vá em frente e ligue a máquina virtual. O usuário cloudera está logado automaticamente na inicialização. Se você precisar, a senha Cloudera é: cloudera. Instie o Informix e o DB2, que você precisa de um banco de dados para trabalhar. Se você ainda não possui um banco de dados, você pode baixar a edição do Informix Developer aqui ou a edição gratuita do DB2 Express-C. Outra alternativa para a instalação do DB2 é baixar a imagem VMWare que já possui o DB2 instalado em um sistema operacional SuSE Linux. Faça o login como root, com a senha: senha. Mude para o ID do db2inst1. Trabalhar como raiz é como dirigir um carro sem um cinto de segurança. Por favor, fale com o seu DBA amigável local sobre como executar o banco de dados. Este artigo não abordará isso aqui. Não tente instalar o banco de dados dentro da imagem virtual Cloudera porque não há espaço livre em disco suficiente. A máquina virtual se conectará ao banco de dados usando o Sqoop, que requer um driver JDBC. Você precisará ter o driver JDBC para seu banco de dados na imagem virtual. Você pode instalar o driver Informix aqui. O instalador do Informix JDBC (lembrar, apenas o driver dentro da imagem virtual, e não o banco de dados) é mostrado na Listagem 1. Listagem 1. Instalação do driver Informix JDBC Nota: Selecione um subdiretório relativo ao homecloudera para não exigir permissão do root para o instalação. O driver JDBC do DB2 está em formato zipado, então basta descompactá-lo no diretório de destino, conforme mostrado na Listagem 2. Listagem 2. Instalação do driver do DB2 JDBC Uma introdução rápida ao HDFS e MapReduce Antes de começar a mover dados entre seu banco de dados relacional e Hadoop, Você precisa de uma rápida introdução ao HDFS e MapReduce. Existem muitos tipos de tutoriais do mundo de Olá para Hadoop, então os exemplos aqui são destinados a dar apenas antecedentes suficientes para que os exercícios do banco de dados façam sentido para você. O HDFS fornece armazenamento em todos os nós do cluster. O primeiro passo no uso do Hadoop é colocar dados em HDFS. O código mostrado na Listagem 3 recebe uma cópia de um livro de Mark Twain e um livro de James Fenimore Cooper e copia esses textos em HDFS. Lista 3. Carregar Mark Twain e James Fenimore Cooper em HDFS Agora você tem dois arquivos em um diretório no HDFS. Por favor contenha sua emoção. Sério, em um único nó e com apenas cerca de 1 megabyte, isso é tão excitante quanto a pintura a seguir. Mas se este fosse um cluster de 400 nós e você tivesse 5 petabytes ao vivo, então você teria problemas para conter sua excitação. Muitos dos tutoriais Hadoop usam o exemplo de contagem de palavras que está incluído no arquivo jar de exemplo. Acontece que muita análise envolve a contagem e agregação. O exemplo na Listagem 4 mostra como invocar o contador de palavras. Listagem 4. Contando palavras de Twain e Cooper O sufixo. gz no DS. txt. gz informa o Hadoop para lidar com a descompressão como parte do processamento Map-Reduce. Cooper é um pouco detalhado tão bem merece a compactação. Há um monte de mensagens executando o trabalho de contagem de palavras. O Hadoop está feliz em fornecer muitos detalhes sobre os programas de Mapeamento e Redução em execução em seu nome. As linhas críticas que você deseja procurar são mostradas na Listagem 5, incluindo uma segunda listagem de um trabalho com falha e como corrigir um dos erros mais comuns que você pode encontrar ao executar MapReduce. Listagem 5. Mensagens MapReduce - o caminho feliz O que todas as mensagens significam que o Hadoop fez muito trabalho e está tentando informá-lo sobre isso, incluindo o seguinte. Verificado para ver se o arquivo de entrada existe. Verificado para ver se o diretório de saída existe e, se o fizer, interromper o trabalho. Nada pior do que substituir horas de computação por um simples erro de teclado. Distribuiu o arquivo Java jar para todos os nós responsáveis ​​por fazer o trabalho. Neste caso, este é apenas um nó. Funcionou a fase do mapeador do trabalho. Normalmente, isso analisa o arquivo de entrada e emite um par de valores-chave. Observe que a chave eo valor podem ser objetos. Corriu a fase de classificação, que classifica a saída do mapeador com base na chave. Corriu a fase de redução, tipicamente isso resume o fluxo de valor-chave e grava saída para o HDFS. Criou muitas métricas sobre o progresso. A Figura 6 mostra uma amostra da página da Web das métricas do trabalho Hadoop depois de executar o exercício da Colméia. Figura 6. Página web de exemplo da Hadoop O que o trabalho fez e onde é a saída Ambas são boas perguntas e são mostradas na Listagem 6. Listagem 6. Mapa-Redução de saída No caso de você executar o mesmo trabalho duas vezes e esquecer Apague o diretório de saída, você receberá as mensagens de erro mostradas na Listagem 7. A solução deste erro é tão simples como excluir o diretório. Listagem 7. Mensagens MapReduce - falha devido à saída já existente no HDFS O Hadoop inclui uma interface do navegador para verificar o status do HDFS. A Figura 7 mostra a saída do trabalho de contagem de palavras. Figura 7. Explorando o HDFS com um navegador Um console mais sofisticado está disponível gratuitamente no site da Cloudera. Ele fornece uma série de recursos além das interfaces padrão da Hadoop. Observe que o estado de saúde do HDFS na Figura 8 é mostrado como Mau. Figura 8. Serviços Hadoop gerenciados pelo Cloudera Manager Por que é ruim Porque em uma única máquina virtual, o HDFS não pode fazer três cópias dos blocos de dados. Quando os blocos são sub-replicados, existe um risco de perda de dados, de modo que a saúde do sistema é ruim. Bom, você não está tentando executar trabalhos Hadoop de produção em um único nó. Você não está limitado a Java para seus trabalhos do MapReduce. Este último exemplo de MapReduce usa Hadoop Streaming para suportar um mapeador escrito em Python e um redutor usando AWK. Não, você não precisa ser um Java-guru para escrever Map-Reduce Mark Twain não era um grande fã de Cooper. Neste caso de uso, Hadoop fornecerá algumas críticas literárias simples comparando Twain e Cooper. O teste FleschKincaid calcula o nível de leitura de um texto em particular. Um dos fatores nesta análise é o comprimento médio da frase. Parar sentenças resulta ser mais complicado do que apenas procurar o caráter do período. O pacote openNLP e o pacote Python NLTK possuem excelentes analisadores de orações. Por simplicidade, o exemplo mostrado na Listagem 8 usará o comprimento da palavra como substituto do número de sílabas em uma palavra. Se você quer levar isso para o próximo nível, implemente o teste FleschKincaid no MapReduce, rastreie a web e calcule os níveis de leitura para seus sites de notícias favoritos. Lista 8. Uma crítica literária do mapper baseada em Python A saída do mapeador, para a palavra Twain, seria: 5 0. Os comprimentos da palavra numérica são ordenados por ordem e apresentados ao redutor em ordem ordenada. Nos exemplos apresentados nas Classificações 9 e 10, não é necessário classificar os dados para obter a saída correta, mas o tipo é incorporado na infra-estrutura MapReduce e acontecerá de qualquer maneira. Listagem 9. Um redutor AWK para crítica literária Listagem 10. Executando um mapeador Python e um redutor AWK com Hadoop Streaming Os fãs Mark Twain podem relaxar feliz sabendo que Hadoop encontra Cooper para usar palavras mais longas e com um desvio padrão chocante (humor pretendido). Isso, é claro, pressupõe que as palavras mais curtas são melhores. Vamos continuar, a seguir é escrever dados em HDFS para Informix e DB2. Usando o Sqoop para gravar dados do HDFS no Informix, DB2 ou MySQL via JDBC O Projeto Sqoop Apache é um utilitário de movimentação de dados Hadoop baseado em JDBC baseado em código aberto. O Sqoop foi originalmente criado em um hackathon em Cloudera e depois foi aberto. Mover dados de HDFS para um banco de dados relacional é um caso de uso comum. HDFS e Map-Reduce são excelentes ao fazer o levantamento pesado. Para consultas simples ou uma loja back-end para um site, armazenar em cache o resultado Map-Reduce em uma loja relacional é um bom padrão de design. Você pode evitar voltar a executar a contagem de palavras Map-Reduce, apenas usando os resultados no Informix e no DB2. Você gerou dados sobre Twain e Cooper, agora vamos movê-lo para um banco de dados, conforme mostrado no Listado 11. Listagem 11. Configuração do driver JDBC Os exemplos apresentados nas Listagens 12 a 15 são apresentados para cada banco de dados. Salte o exemplo de interesse para você, incluindo Informix, DB2 ou MySQL. Para os poligotos do banco de dados, divirta-se fazendo todos os exemplos. Se o seu banco de dados de escolha não estiver incluído aqui, não será um grande desafio fazer essas amostras funcionarem em outro lugar. Lista 12. Usuários do Informix: Sqoop escrevendo os resultados da contagem de palavras para o Listado Informix 13. Usuários do Informix: Sqoop escrevendo os resultados da contagem de palavras para a lista de Informix 14. Usuários do DB2: Sqoop escrevendo os resultados da contagem de palavras para o Listado 15 do DB2 . Usuários MySQL: Sqoop escrevendo os resultados da contagem de palavras para MySQL Importando dados para HDFS a partir do Informix e do DB2 com o Sqoop A inserção de dados no Hadoop HDFS também pode ser realizada com o Sqoop. A funcionalidade bidirecional é controlada através do parâmetro de importação. Os bancos de dados de exemplo que vêm com ambos os produtos têm alguns conjuntos de dados simples que você pode usar para esse propósito. A Listagem 16 mostra a sintaxe e os resultados para o Sqooping de cada servidor. Para usuários do MySQL, adapte a sintaxe dos exemplos do Informix ou DB2 que se seguem. Listagem 16. Importação de Sqoop do banco de dados de exemplo do Informix para HDFS Por que existem quatro arquivos diferentes, cada um contendo apenas parte dos dados O Sqoop é um utilitário altamente paralelizado. Se um cluster de 4000 nodos executando o Sqoop fez uma importação completa do acelerador de um banco de dados, as 4000 conexões pareceriam muito como um ataque de negação de serviço contra o banco de dados. O limite de conexão padrão do Sqoops é quatro conexões JDBC. Cada conexão gera um arquivo de dados no HDFS. Assim, os quatro arquivos. Para não se preocupar, você verá como o Hadoop funciona nesses arquivos sem qualquer dificuldade. O próximo passo é importar uma tabela do DB2. Como mostrado na Listagem 17, especificando a opção - m 1, uma tabela sem uma chave primária pode ser importada e o resultado é um único arquivo. Listagem 17. Importação Sqoop do banco de dados de exemplo do DB2 para o HDFS Usando a Arganha: unindo dados do Informix e do DB2 Existe um caso de uso interessante para juntar dados do Informix ao DB2. Não é muito emocionante para duas mesas triviais, mas uma enorme vitória para vários terabytes ou petabytes de dados. Existem duas abordagens fundamentais para juntar diferentes fontes de dados. Deixando os dados em repouso e usando a tecnologia de federação versus mover os dados para uma única loja para realizar a junção. A economia e o desempenho do Hadoop tornam a transferência de dados para o HDFS e a realização do levantamento pesado com o MapReduce, uma escolha fácil. As limitações de largura de banda da rede criam uma barreira fundamental se tentar juntar dados em repouso com uma tecnologia de estilo de federação. A Hive fornece um subconjunto de SQL para operar em um cluster. Não fornece semântica de transações. Não é um substituto para Informix ou DB2. Se você tem algum levantamento pesado na forma de juntas de mesa, mesmo que você tenha algumas mesas menores, mas que precise fazer produtos desossosos, o Hadoop é a ferramenta de escolha. Para usar a linguagem de consulta do Hive, um subconjunto de SQL chamado metadados da tabela Hiveql é necessário. Você pode definir os metadados contra arquivos existentes no HDFS. O Sqoop fornece um atalho conveniente com a opção create-hive-table. Os usuários do MySQL devem se sentir livres para adaptar os exemplos mostrados na Listagem 18. Um exercício interessante seria juntar o MySQL, ou qualquer outra tabela de banco de dados relacional, para grandes planilhas. Listagem 18. Juntando a tabela informix. customer à tabela db2.staff É muito mais bonita quando você usa Hue para uma interface gráfica do navegador, como mostrado nas Figuras 9, 10 e 11. Figura 9. GUI de cera de abelha para colméia em CDH4 , Veja a consulta do Hiveql Figura 10. Hue Beeswax GUI for Hive, veja a consulta do Hiveql Figura 11. Hue Beeswax, navegador gráfico, veja o resultado da junção do Informix-DB2 Usando o Porco: unindo os dados do Informix e do DB2 Pig é um idioma processual. Assim como a Hive, sob as capas, ele gera o código MapReduce. A facilidade de uso do Hadoop continuará a melhorar à medida que mais projetos estiverem disponíveis. Tanto quanto alguns de nós realmente gostam da linha de comando, existem várias interfaces gráficas de usuário que funcionam muito bem com o Hadoop. O Listado 19 mostra o código do Porco que é usado para juntar a tabela do cliente e a tabela do pessoal do exemplo anterior. Lista 19. Exemplo de porco para se juntar à tabela Informix para a tabela do DB2. Como escolho Java, Hive ou Pig. Você tem várias opções para programação do Hadoop e é melhor examinar o caso de uso para escolher a ferramenta certa para o trabalho . Você não está limitado a trabalhar em dados relacionais, mas este artigo está focado em Informix, DB2 e Hadoop jogando bem juntos. Escrever centenas de linhas em Java para implementar um estilo relacional hash-join é um completo desperdício de tempo, já que esse algoritmo Hadoop MapReduce já está disponível. Como você escolhe Esta é uma questão de preferência pessoal. Alguns, como operações de configuração de codificação em SQL. Alguns preferem o código processual. Você deve escolher o idioma que o tornará mais produtivo. Se você possui vários sistemas relacionais e quer combinar todos os dados com ótimo desempenho em um ponto de preço baixo, Hadoop, MapReduce, Hive e Pig estão prontos para ajudar. Não exclua seus dados: rolando uma partição do Informix para HDFS A maioria dos bancos de dados relacionais modernos podem particionar dados. Um caso de uso comum é dividir por período de tempo. Uma janela fixa de dados é armazenada, por exemplo, um intervalo de 18 meses, após o qual os dados são arquivados. A capacidade de partição-partição é muito poderosa. Mas depois que a partição é separada, o que faz com o arquivo de fita de dados antigos é uma maneira muito cara de descartar os bytes antigos. Uma vez movido para um meio menos acessível, os dados são muito raramente acessados, a menos que exista um requisito de auditoria legal. Hadoop fornece uma alternativa muito melhor. Mover os bytes de arquivamento da partição antiga para o Hadoop fornece acesso de alto desempenho com muito menor custo do que manter os dados no sistema original ou datamartdatawarehouse. Os dados são muito antigos para serem de valor transacional, mas ainda são muito valiosos para a organização para análises de longo prazo. Os exemplos Sqoop apresentados anteriormente fornecem os conceitos básicos sobre como mover esses dados de uma partição relacional para HDFS. Fusível - Como chegar aos seus arquivos HDFS via NFS Os dados do arquivo InformixDB2flat no HDFS podem ser acessados ​​via NFS, conforme mostrado na Listagem 20. Isso fornece operações de linha de comando sem usar a interface hadoop fs - yadayada. A partir de uma perspectiva de caso de uso de tecnologia, o NFS é severamente limitado em um ambiente Big Data, mas os exemplos são incluídos para desenvolvedores e dados não tão grandes. Listagem 20. Configurando Fusível - acesse seus dados HDFS via NFS Flume - crie um arquivo pronto para carga Flume próxima geração, ou flume-ng é um carregador paralelo de alta velocidade. Os bancos de dados possuem carregadores de alta velocidade, então, como eles funcionam bem juntos. O caso de uso relacional para Flume-ng é criar um arquivo pronto para carga, local ou remotamente, para que um servidor relacional possa usar seu carregador de alta velocidade. Sim, essa funcionalidade se sobrepõe a Sqoop, mas o script mostrado na Listagem 21 foi criado a pedido de um cliente especificamente para esse estilo de carga de banco de dados. Lista 21. Exportando dados HDFS para um arquivo plano para carregar por um banco de dados Oozie - adicionando fluxo de trabalho para vários trabalhos Oozie encadeará vários trabalhos Hadoop. Há um bom conjunto de exemplos incluídos com oozie que são usados ​​no conjunto de códigos mostrado na Listagem 22. Listagem 22. Controle de trabalho com oozie HBase, uma loja de valor-chave de alto desempenho HBase é uma loja de valor-chave de alto desempenho. Se o seu caso de uso exigir escalabilidade e apenas requer o equivalente ao banco de dados de transações de confirmação automática, o HBase pode ser a tecnologia para montar. O HBase não é um banco de dados. O nome é infeliz desde então, o termo base implica banco de dados. Faz um excelente trabalho para lojas de alto valor de alto valor. Existe alguma sobreposição entre a funcionalidade do HBase, Informix, DB2 e outros bancos de dados relacionais. Para as transações ACID, a conformidade completa do SQL e vários índices, uma base de dados relacional tradicional é a escolha óbvia. Este último exercício de código é dar familiaridade básica com a HBASE. É simples por design e de forma alguma representa o escopo da funcionalidade HBases. Use este exemplo para entender algumas das capacidades básicas do HBase. HBase, The Definitive Guide, de Lars George, é uma leitura obrigatória se você planeja implementar ou rejeitar a HBase para seu caso de uso particular. Este último exemplo, mostrado nas Listagens 23 e 24, usa a interface REST fornecida com HBase para inserir valores-chave em uma tabela HBase. O arnês de teste é baseado em curvatura. Lista 23. Criar uma tabela HBase e inserir uma linha Listagem 24. Usando a interface HBase REST Conclusão Wow, você chegou ao fim, bem feito Este é apenas o início da compreensão do Hadoop e sua interação com o Informix e o DB2. Aqui estão algumas sugestões para os próximos passos. Pegue os exemplos mostrados anteriormente e adapte-os aos seus servidores. Você quer usar dados pequenos, pois não há muito espaço na imagem virtual. Seja certificado como administrador do Hadoop. Visite o site Cloudera para cursos e informações de teste. Seja certificado como um desenvolvedor Hadoop. Inicie um cluster usando a edição gratuita do Cloudera Manager. Comece com o IBM Big Sheets executando o CDH4. Recursos para download Temas relacionadosPHP oferece três API diferentes para se conectar ao MySQL. Estes são o mysql (removido a partir do PHP 7), mysqli. E extensões de PDO. As funções mysql costumavam ser muito populares, mas seu uso não é mais encorajado. A equipe de documentação está discutindo a situação de segurança do banco de dados, e educar os usuários para se afastarem da extensão usada extmysql é parte disso (verifique php. internals: deprecating extmysql). E a equipe de desenvolvedores do PHP posterior tomou a decisão de gerar erros EDEPRECADOS quando os usuários se conectam ao MySQL, seja através do mysqlconnect (). Mysqlpconnect () ou a funcionalidade de conexão implícita incorporada em extmysql. O extmysql foi oficialmente reprovado a partir do PHP 5.5 e foi removido a partir do PHP 7. Quando você vai em qualquer página do manual da função mysql, você vê uma caixa vermelha, explicando que não deveria mais ser usado. Mover-se de extmysql não é apenas sobre segurança, mas também sobre ter acesso a todos os recursos do banco de dados MySQL. O extmysql foi construído para o MySQL 3.23 e só obteve muito poucas adições desde então, enquanto mantendo a compatibilidade com esta versão antiga, o que torna o código um pouco mais difícil de manter. Os recursos que faltam que não são suportados pelo extmysql incluem: (a partir do manual do PHP). Reason to not use mysql function : Not under active development Removed as of PHP 7 Lacks an OO interface Doesnt support non-blocking, asynchronous queries Doesnt support prepared statements or parameterized queries Doesnt support stored procedures Doesnt support multiple statements Doesnt support transactions Doesnt support all of the functionality in MySQL 5.1 Lack of support for prepared statements is particularly important as they provide a clearer, less error prone method of escaping and quoting external data than manually escaping it with a separate function call. Suppressing deprecation warnings While code is being converted to MySQLi PDO. EDEPRECATED errors can be suppressed by setting errorreporting in php. ini to exclude EDEPRECATED: Note that this will also hide other deprecation warnings . which, however, may be for things other than MySQL. ( from PHP manual ) And a better way is PDO. and I am now writing a simple PDO tutorial. A simple and short PDO tutorial Q. First question in my mind was: what is PDO A. PDO PHP Data Objects is a database access layer providing a uniform method of access to multiple databases. Connecting to MySQL With mysql function or we can say it the old way (deprecated in PHP 5.5 and above) With PDO. All you need to do is create a new PDO object. The constructor accepts parameters for specifying the database source PDO s constructor mostly takes four parameters which are DSN (data source name) and optionally username. password . Here I think you are familiar with all except DSN this is new in PDO. A DSN is basically a string of options that tell PDO which driver to use, and connection details. For further reference, check PDO MySQL DSN . Note: you can also use charsetUTF-8. but sometimes it causes an error, so its better to use utf8 . If there is any connection error, it will throw a PDOException object that can be cached to handle Exception further. You can also pass in several driver options as an array to the fourth parameter. I recommend passing the parameter which puts PDO into exception mode. Because some PDO drivers dont support native prepared statements, so PDO performs emulation of the prepare. It also lets you manually enable this emulation. To use the native server-side prepared statements, you should explicitly set it false . The other is to turn off prepare emulation which is enabled in the MySQL driver by default, but prepare emulation should be turned off to use PDO safely. I will later explain why prepare emulation should be turned off. To find reason please check this post . It is only usable if you are using an old version of MySQL which I do not recommended. Below is an example of how you can do it: Can we set attributes after PDO construction Yes . we can also set some attributes after PDO construction with the setAttribute method: Error Handling Error handling is much easier in PDO than mysql . A common practice when using mysql is: OR die() is not a good way to handle the error since we can not handle the thing in die. It will just end the script abruptly and then echo the error to the screen which you usually do NOT want to show to your end users, and let bloody hackers discover your schema. Alternately, the return values of mysql functions can often be used in conjunction with mysqlerror() to handle errors. PDO offers a better solution: exceptions. Anything we do with PDO should be wrapped in a try - catch block. We can force PDO into one of three error modes by setting the error mode attribute. Three error handling modes are below. PDO::ERRMODESILENT. Its just setting error codes and acts pretty much the same as mysql where you must check each result and then look at db-gterrorInfo() to get the error details. PDO::ERRMODEWARNING Raise EWARNING. (Run-time warnings (non-fatal errors). Execution of the script is not halted.) PDO::ERRMODEEXCEPTION. Throw exceptions. It represents an error raised by PDO. You should not throw a PDOException from your own code. See Exceptions for more information about exceptions in PHP. It acts very much like or die(mysqlerror()). when it isnt caught. But unlike or die(). the PDOException can be caught and handled gracefully if you choose to do so. And you can wrap it in try - catch. like below: You do not have to handle with try - catch right now. You can catch it at any time appropriate, but I strongly recommend you to use try - catch. Also it may make more sense to catch it at outside the function that calls the PDO stuff: Also, you can handle by or die() or we can say like mysql. but it will be really varied. You can hide the dangerous error messages in production by turning displayerrors off and just reading your error log. Now, after reading all the things above, you are probably thinking: what the heck is that when I just want to start leaning simple SELECT. INSERT. UPDATE. or DELETE statements Dont worry, here we go: Selecting Data So what you are doing in mysql is: Now in PDO. you can do this like: Note . If you are using the method like below ( query() ), this method returns a PDOStatement object. So if you want to fetch the result, use it like above. In PDO Data, it is obtained via the - gtfetch(). a method of your statement handle. Before calling fetch, the best approach would be telling PDO how youd like the data to be fetched. In the below section I am explaining this. Fetch Modes Note the use of PDO::FETCHASSOC in the fetch() and fetchAll() code above. This tells PDO to return the rows as an associative array with the field names as keys. There are many other fetch modes too which I will explain one by one. First of all, I explain how to select fetch mode: In the above, I have been using fetch(). You can also use: PDOStatement::fetchAll() - Returns an array containing all of the result set rows PDOStatement::fetchColumn() - Returns a single column from the next row of a result set PDOStatement::fetchObject() - Fetches the next row and returns it as an object. PDOStatement::setFetchMode() - Set the default fetch mode for this statement Now I come to fetch mode: PDO::FETCHASSOC. returns an array indexed by column name as returned in your result set PDO::FETCHBOTH (default): returns an array indexed by both column name and 0-indexed column number as returned in your result set There are even more choices Read about them all in PDOStatement Fetch documentation. . Getting the row count : Instead of using mysqlnumrows to get the number of returned rows, you can get a PDOStatement and do rowCount(). like: Getting the Last Inserted ID Insert and Update or Delete statements What we are doing in mysql function is: And in pdo, this same thing can be done by: In the above query PDO::exec execute an SQL statement and returns the number of affected rows. Insert and delete will be covered later. The above method is only useful when you are not using variable in query. But when you need to use a variable in a query, do not ever ever try like the above and there for prepared statement or parameterized statement is. Prepared Statements Q. What is a prepared statement and why do I need them A. A prepared statement is a pre-compiled SQL statement that can be executed multiple times by sending only the data to the server. The typical workflow of using a prepared statement is as follows (quoted from Wikipedia three 3 point ): Prepare . The statement template is created by the application and sent to the database management system (DBMS). Certain values are left unspecified, called parameters, placeholders or bind variables (labelled. below): INSERT INTO PRODUCT (name, price) VALUES (. ) The DBMS parses, compiles, and performs query optimization on the statement template, and stores the result without executing it. Execute . At a later time, the application supplies (or binds) values for the parameters, and the DBMS executes the statement (possibly returning a result). The application may execute the statement as many times as it wants with different values. In this example, it might supply Bread for the first parameter and 1.00 for the second parameter. You can use a prepared statement by including placeholders in your SQL. There are basically three ones without placeholders (dont try this with variable its above one), one with unnamed placeholders, and one with named placeholders. Q. So now, what are named placeholders and how do I use them A. Named placeholders. Use descriptive names preceded by a colon, instead of question marks. We dont care about positionorder of value in name place holder: You can also bind using an execute array as well: Another nice feature for OOP friends is that named placeholders have the ability to insert objects directly into your database, assuming the properties match the named fields. For example: Q. So now, what are unnamed placeholders and how do I use them A. Lets have an example: In the above, you can see those. instead of a name like in a name place holder. Now in the first example, we assign variables to the various placeholders ( stmt-gtbindValue(1, name, PDO::PARAMSTR) ). Then, we assign values to those placeholders and execute the statement. In the second example, the first array element goes to the first. and the second to the second. NOTE . In unnamed placeholders we must take care of the proper order of the elements in the array that we are passing to the PDOStatement::execute() method. SELECT. INSERT. UPDATE. DELETE prepared queries Amine, No, it is not. While NullPoite really did a great job of writing it, this is most certainly isn39t a good reading, because it is way to long. I39m pretty sure, that 8 of 10 visitors will simply skip it. And you also have explanation, why this answer isn39t top voted. A tldr part in the beginning would be a good idea, I think. ndash trejder Jul 4 14 at 11:00 First, lets begin with the standard comment we give everyone: Please, dont use mysql functions in new code . They are no longer maintained and are officially deprecated. See the red box . Learn about prepared statements instead, and use PDO or MySQLi - this article will help you decide which. If you choose PDO, here is a good tutorial . Lets go through this, sentence by sentence, and explain: They are no longer maintained, and are officially deprecated This means that the PHP community is gradually dropping support for these very old functions. They are likely to not exist in a future (recent) version of PHP Continued use of these functions may break your code in the (not so) far future. Newer extmysql has been removed in PHP 7 Instead, you should learn of prepared statements - mysql extension does not support prepared statements . which is (among other things) a very effective countermeasure against SQL Injection . It fixed a very serious vulnerability in MySQL dependent applications which allows attackers to gain access to your script and perform any possible query on your database. When you go on any mysql function manual page, you see a red box, explaining it should not be used anymore. Use either PDO or MySQLi There are better, more robust and well built alternatives, PDO - PHP Database Object . which offers a complete OOP approach to database interaction, and MySQLi . which is a MySQL specific improvement. Ease of use The analytic and synthetic reasons were already mentioned. For newcomers theres a more significant incentive to stop using the dated mysql functions. Contemporary database APIs are just easier to use. Its mostly the bound parameters which can simplify code. And with excellent tutorials (as seen above) the transition to PDO isnt overly arduous. Rewriting a larger code base at once however takes time. Raison dtre for this intermediate alternative: Equivalent pdo functions in place of mysql Using lt pdomysql. php gt you can switch from the old mysql functions with minimal effort . It adds pdo function wrappers which replace their mysql counterparts. Simply includeonce( pdomysql. php ) in each invocation script that has to interact with the database. Remove the mysql function prefix everywhere and replace it with pdo . mysql connect() becomes pdo connect() mysql query() becomes pdo query() mysql numrows() becomes pdo numrows() mysql insertid() becomes pdo insertid() mysql fetcharray() becomes pdo fetcharray() mysql fetchassoc() becomes pdo fetchassoc() mysql realescapestring() becomes pdo realescapestring() and so on. Your code will work alike and still mostly look the same: Et voil. Your code is using PDO. Now its time to actually utilize it. Bound parameters can be easy to use You just need a less unwieldy API. pdoquery() adds very facile support for bound parameters. Converting old code is straightforward: Move your variables out of the SQL string. Add them as comma delimited function parameters to pdoquery() . Place question marks. as placeholders where the variables were before. Get rid of single quotes that previously enclosed string valuesvariables. The advantage becomes more obvious for lengthier code. Often string variables arent just interpolated into SQL, but concatenated with escaping calls in between. Com. placeholders applied you dont have to bother with that: Remember that pdo still allows either or . Just dont escape a variable and bind it in the same query. The placeholder feature is provided by the real PDO behind it. Thus also allowed :named placeholder lists later. More importantly you can pass REQUEST variables safely behind any query. When submitted ltformgt fields match the database structure exactly its even shorter: So much simplicity. But lets get back to some more rewriting advises and technical reasons on why you may want to get rid of mysql and escaping. Fix or remove any oldschool sanitize() function Once you have converted all mysql calls to pdoquery with bound params, remove all redundant pdorealescapestring calls. In particular you should fix any sanitize or clean or filterThis or cleandata functions as advertised by dated tutorials in one form or the other: Most glaring bug here is the lack of documentation. More significantly the order of filtering was in exactly the wrong order. Correct order would have been: deprecatedly stripslashes as the innermost call, then trim. afterwards striptags. htmlentities for output context, and only lastly the escapestring as its application should directly preceed the SQL intersparsing. But as first step just get rid of the realescapestring call. You may have to keep the rest of your sanitize() function for now if your database and application flow expect HTML-context-safe strings. Add a comment that it applies only HTML escaping henceforth. Stringvalue handling is delegated to PDO and its parameterized statements. If there was any mention of stripslashes() in your sanitize function, it may indicate a higher level oversight. That was commonly there to undo damage (double escaping) from the deprecated magicquotes. Which however is best fixed centrally. not string by string. Use one of the userland reversal approaches. Then remove the stripslashes() in the sanitize function. Historic note on magicquotes. That feature is rightly deprecated. Its often incorrectly portrayed as failed security feature however. But magicquotes are as much a failed security feature as tennis balls have failed as nutrition source. That simply wasnt their purpose. The original implementation in PHP2FI introduced it explicitly with just quotes will be automatically escaped making it easier to pass form data directly to msql queries . Notably it was accidentially safe to use with mSQL. as that supported ASCII only. Then PHP3Zend reintroduced magicquotes for MySQL and misdocumented it. But originally it was just a convenience feature. not intend for security. How prepared statements differ When you scramble string variables into the SQL queries, it doesnt just get more intricate for you to follow. Its also extraneous effort for MySQL to segregate code and data again. SQL injections simply are when data bleeds into code context. A database server cant later spot where PHP originally glued variables inbetween query clauses. With bound parameters you separate SQL code and SQL-context values in your PHP code. But it doesnt get shuffled up again behind the scenes (except with PDO::EMULATEPREPARES). Your database receives the unvaried SQL commands and 1:1 variable values. While this answer stresses that you should care about the readability advantages of dropping mysql . Theres occasionally also a performance advantage (repeated INSERTs with just differing values) due to this visible and technical datacode separation. Beware that parameter binding still isnt a magic one-stop solution against all SQL injections. It handles the most common use for datavalues. But cant whitelist column name table identifiers, help with dynamic clause construction, or just plain array value lists. Hybrid PDO use These pdo wrapper functions make a coding-friendly stop-gap API. (Its pretty much what MYSQLI could have been if it wasnt for the idiosyncratic function signature shift). They also expose the real PDO at most times. Rewriting doesnt have to stop at using the new pdo function names. You could one by one transition each pdoquery() into a plain pdo-prepare()-execute() call. Its best to start at simplifying again however. For example the common result fetching: Can be replaced with just an foreach iteration: Or better yet a direct and complete array retrieval: Youll get more helpful warnings in most cases than PDO or mysql usually provide after failed queries. Other options So this hopefully visualized some practical reasons and a worthwile pathway to drop mysql . Just switching to pdo doesnt quite cut it. pdoquery() is also just a frontend onto it. Unless you also introduce parameter binding or can utilize something else from the nicer API, its a pointless switch. I hope its portrayed simple enough to not further the discouragement to newcomers. (Education usually works better than prohibition.) While it qualifies for the simplest-thing-that-could-possibly-work category, its also still very experimental code. I just wrote it over the weekend. Theres a plethora of alternatives however. Just google for PHP database abstraction and browse a little. There always have been and will be lots of excellent libraries for such tasks. If you want to simplify your database interaction further, mappers like ParisIdiorm are worth a try. Just like nobody uses the bland DOM in JavaScript anymore, you dont have to babysit a raw database interface nowadays. answered Dec 24 13 at 23:30 Speaking of technical reasons, there are only few, extremely specific and rarely used. Most likely you will never ever use them in your life. May be I am too ignorant, but I never had an opportunity to use them things like non-blocking, asynchronous queries stored procedures returning multiple resultsets Encryption (SSL) Compression If you need them - these are no doubt technical reasons to move away from mysql extension toward something more stylish and modern-looking. Nevertheless, there are also some non-technical issues, which can make your experience a bit harder further use of these functions with modern PHP versions will raise deprecated-level notices. They simply can be turned off. in a distant future they can be possibly removed from the default PHP build. Not a big deal too, as mydsql ext will be moved into PECL and every hoster will be happy to complie PHP with it, as they dont want to lose clients whose sites were working for decades. strong resistance from Stackoverflow community. very time you mention these honest functions, you being told that they are under strict taboo. being an average php user, most likely your idea of using these functions is error-prone and wrong. Just because of all these numerous tutorials and manuals which teach you wrong way. Not the functions themselves - I have to emphasize it - but the way they are used. This latter issue is a problem. But, to my opinion, proposed solution is no better either. It seems to me too idealistic a dream that all those PHP users will learn how to handle SQL queries properly at once. Most likely they would just change mysql to mysqli mechanically, leaving the approach the same . Especially because mysqli makes prepared statements usage incredible painful and troublesome. Not to mention that native prepared statements arent enough to protect from SQL injections, and neither mysqli nor PDO offers a solution. So, instead of fighting this honest extension, Id prefer to fight wrong practices and educate people in the right ways. Also, there are some false or non-significant reasons, like Doesnt support Stored Procedures (we were using mysqlquery(CALL myproc) for ages) Doesnt support Transactions (same as above) Doesnt support Multiple Statements (who need them) Not under active development (so what does it affect you in any practical way) Lacks an OO interface (to create one is a matter of several hours) Doesnt support Prepared Statements or Parametrized Queries A latter one is an interesting point. Although mysql ext do not support native prepared statements, they arent required for the safety. We can easily fake prepared statements using manually handled placeholders (just like PDO does): voila . everything is parameterized and safe. But okay, if you dont like the red box in the manual, a problem of choice arises: mysqli or PDO Well, the answer would be as follows: If you understand the necessity of using a database abstraction layer . and looking for an API to create one, mysqli is a very good choice, as it indeed supports many mysql-specific features. If, like wast majority of PHP folks, you are using raw API calls right in the application code (which is essentially wrong practice) - PDO is the only choice . as this extension pretends to be not just API but rather a semi-DAL, still incomplete but offers many important features, with two of them makes PDO critically distinguished from mysqli: unlike mysqli, PDO can bind placeholders by value . which makes dynamically built queries feasible without several screens of quite messy code. unlike mysqli, PDO can always return query result in a simple usual array, while mysqli can do it only on mysqlnd installations. So, if you are an average PHP user and want to save yourself a ton of headaches when using native prepared statements, PDO - again - is the only choice. However, PDO is not a silver bullet too, and has its hardships. So, I wrote solutions for all the common pitfalls and complex cases in the PDO tag wiki Nevertheless, everyone talking of extensions always missing the 2 important facts about Mysqli and PDO: Prepared statement isnt a silver bullet . There are dynamical identifiers which cannot be bound using prepared statements. There are dynamical queries with unknown number of parameters which makes query building a difficult task. Neither mysqli nor PDO functions should be appeared in the application code. There ought to be an abstraction layer between them and application code, which will do all the dirty job of binding, looping, error handling, etc. inside, making application code DRY and clean. Especially for the complex cases like dynamical query building. So, just switching to PDO or mysqli is not enough. One have to use an ORM, or a query builder, or whatever database abstraction class instead of calling raw API functions in their code. And contrary - if you have an abstraction layer between your application code and mysql API - it doesnt actually matter which engine is used. You can use mysql ext until it goes deprecated and then easily rewrite your abstraction class to another engine, having all the application code intact. Here are some examples based on my safemysql class to show how such an abstraction class ought to be: Compare this one single line with amount of code you will need with PDO . Then compare with crazy amount of code you will need with raw Mysqli prepared statements. Note that error handling, profiling, query logging already built in and running. Compare it with usual PDO inserts, when every single field name being repeated six to ten times - in all these numerous named placeholders, bindings and query definitions. You can hardly find an example for PDO to handle such practical case. And it will be too wordy and most likely unsafe. So, once more - it is not just raw driver should be your concern but abstraction class, useful not only for silly examples from beginners manual but to solve whatever real life problems. How is Not under active development only for that made-up 390.0139 If you build something with this stand-still function, update your mysql-version in a year and wind up with a non-working system, I39m sure there are an awful lot of people suddenly in that 390.0139. I39d say that deprecated and not under active development are closely related. You can say that there is quotno worthy reasonquot for it, but the fact is that when offered a choice between the options, no active development is almost just as bad as deprecated I39d say ndash Nanne Feb 1 13 at 10:21 ShaquinTrifonoff: sure, it doesn39t use prepared statements. But neither does PDO. which most people recommend over MySQLi. So I39m not sure that has a significant impact here. The above code (with a little more parsing) is what PDO does when you prepare a statement by default. ndash ircmaxell Feb 4 13 at 12:44 This answer is written to show just how trivial it is to bypass poorly written PHP user-validation code, how (and using what) these attacks work and how to replace the old MySQL functions with a secure prepared statement - and basically, why StackOverflow users (probably with a lot of rep) are barking at new users asking questions to improve their code. First off, please feel free to create this test mysql database (I have called mine prep): With that done, we can move to our PHP code. Lets assume the following script is the verification process for an admin on a website (simplified but working if you copy and use it for testing): Seems legit enough at first glance. The user has to enter a login and password, right Brilliant, not enter in the following: The output is as follows: Super Working as expected, now lets try the actual username and password: Amazing Hi-fives all round, the code correctly verified an admin. Its perfect Well, not really. Lets say the user is a clever little person. Lets say the person is me. Enter in the following: And the output is: Congrats, you just allowed me to enter your super-protected admins only section with me entering a false username and a false password. Seriously, if you dont believe me, create the database with the code I provided, and run this PHP code - which at glance REALLY does seem to verify the username and password rather nicely. So, in answer, THAT IS WHY YOU ARE BEING YELLED AT. So, lets have a look at what went wrong, and why I just got into your super-admin-only-bat-cave. I took a guess and assumed that you werent being careful with your inputs and simply passed them to the database directly. I constructed the input in a way tht would CHANGE the query that you were actually running. So, what was it supposed to be, and what did it end up being Thats the query, but when we replace the variables with the actual inputs that we used, we get the following: See how I constructed my password so that it would first close the single quote around the password, then introduce a completely new comparison Then just for safety, I added another string so that the single quote would get closed as expected in the code we originally had. However, this isnt about folks yelling at you now, this is about showing you how to make your code more secure. Okay, so what went wrong, and how can we fix it This is a classic SQL injection attack. One of the simplest for that matter. On the scale of attack vectors, this is a toddler attacking a tank - and winning. So, how do we protect your sacred admin section and make it nice and secure The first thing to do will be to stop using those really old and deprecated mysql functions. I know, you followed a tutorial you found online and it works, but its old, its outdated and in the space of a few minutes, I have just broken past it without so much as breaking a sweat. Now, you have the better options of using mysqli or PDO. I am personally a big fan of PDO, so I will be using PDO in the rest of this answer. There are pros and cons, but personally I find that the pros far outweigh the cons. Its portable across multiple database engines - whether you are using MySQL or Oracle or just about bloody anything - just by changing the connection string, it has all the fancy features we want to use and it is nice and clean. I like clean. Now, lets have a look at that code again, this time written using a PDO object: The major differences are that there are no more mysql functions. Its all done via a PDO object, secondly, it is using a prepared statement. Now, whats a prepred statement you ask Its a way to tell the database ahead of running a query, what the query is that we are going to run. In this case, we tell the database: Hi, I am going to run a select statement wanting id, userid and pass from the table users where the userid is a variable and the pass is also a variable.. Then, in the execute statement, we pass the database an array with all the variables that it now expects. The results are fantastic. Lets try those username and password combinations from before again: User wasnt verified. Impressionante. Oh, I just got a little excited, it worked: The check passed. We have a verified admin Now, lets try the data that a clever chap would enter to try to get past our little verification system: This time, we get the following: This is why you are being yelled at when posting questions - its because people can see that your code can be bypassed wihout even trying. Please, do use this question and answer to improve your code, to make it more secure and to use functions that are current. Lastly, this isnt to say that this is PERFECT code. There are many more things that you could do to improve it, use hashed passwords for example, ensure that when you store sensetive information in the database, you dont store it in plain text, have multiple levels of verification - but really, if you just change your old injection prone code to this, you will be WELL along the way to writing good code - and the fact that you have gotten this far and are still reading gives me a sense of hope that you will not only implement this type of code when writing your websites and applications, but that you might go out and research those other things I just mentioned - and more. Write the best code you can, not the most basic code that barely functions. answered Sep 18 13 at 12:28 Because (amongst other reasons) its much harder to ensure the input data is sanitized. If you use parametrized queries, as one does with PDO or mysqli you can entirely avoid the risk. As an example, some-one could use enhzflep) drop table users as a user name. The old functions will allow executing of multiple statements per query, so something like that nasty bugger can delete a whole table. If one were to use PDO of mysqli, the user-name would end-up being enhzflep) drop table users The old functions will allow executing of multiple statements per query - no, they won39t. That kind of injection is not possible with extmysql - the only way this kind of injection is possible with PHP and MySQL is when using MySQLi and the mysqlimultiquery() function. The kind injection that is possible with extmysql and unescaped strings is things like 39 OR 39139 391 to extract data from the database that was not meant to be accessible. In certain situations it is possible to inject sub queries, however it is still not possible to modify the database in this way. ndash DaveRandom Dec 30 12 at 20:58 The MySQL extension is the oldest of the three and was the original way that developers used to communicate with MySQL. This extension is now being deprecated in favor of the other two alternatives because of improvements made in newer releases of both PHP and MySQL. MySQLi is the improved extension for working with MySQL databases. It takes advantage of features that are available in newer versions of the MySQL server, exposes both a function-oriented and an object-oriented interface to the developer and a does few other nifty things. PDO offers an API that consolidates most of the functionality that was previously spread across the major database access extensions, i. e. MySQL, PostgreSQL, SQLite, MSSQL, etc. The interface exposes high-level objects for the programmer to work with database connections, queries and result sets, and low-level drivers perform communication and resource handling with the database server. A lot of discussion and work is going into PDO and its considered the appropriate method of working with databases in modern, professional code. answered Sep 2 15 at 7:20 I find the above answers really lengthy, so to summarize: The mysqli extension has a number of benefits, the key enhancements over the mysql extension being: Object-oriented interface Support for Prepared Statements Support for Multiple Statements Support for Transactions Enhanced debugging capabilities Embedded server support As explained in the above answeres, the alternatives of mysql are mysqli and pdo. API supports server-side Prepared Statements. Supported by MYSQLi and PDO API supports client-side Prepared Statements. Supported only by PDO API supports Stored Procedures. Both MySQLi and PDO API supports Multiple Statements and all MySQL 4.1 functionality - Supported by MySQLi and mostly also by PDO Both MySQLi and PDO where introduced in PHP5.0, whereas MySQL was introduced prior to PHP3.0. A point to note is MySQL is included in PHP5.x though deprecated in later versions.

Thursday 24 August 2017

Akamai Stock Options


Esta empresa de 10 bilhões que você nunca ouviu é a razão pela qual sua internet é rápida Se você estiver assistindo as Olimpíadas on-line, você ganhou uma empresa para agradecer pela qualidade do seu fluxo. Não é NBC ou seu fornecedor de cabo. É uma empresa com base em Massachusetts com um nome divertido que alguns dos fora da tecnologia ouviram falar: Akamai, que é havaiano para inteligente, caso você estivesse se perguntando. Em essência, o que faz é simples: faz tudo o que você faz na Internet mais rapidamente, colocando conteúdo em servidores que estão fisicamente mais próximos das pessoas que acessam. A empresa opera o que é conhecido como uma rede de entrega de conteúdo, e a Akamais é a maior do mundo, servindo até 30 de todo o tráfego da Web (PDF). Embora o conceito básico seja fácil de entender, retirá-lo na escala Akamais requer um grande número de servidores e engenharia inteligente para fornecer experiências ótimas. O CEO da Akamai, Tom Leighton, disse à Business Insider que a empresa opera mais de 150.000 servidores em todo o mundo para garantir que o conteúdo seja entregue o mais rápido possível. Juntos, esses servidores atuam como uma Internet virtual sentada em cima da real. Os clientes da Akamais mantêm cópias do conteúdo que desejam receber um conteúdo rápido de vídeo e música, uma página inicial de sites, ou qualquer outra coisa, realmente e quando você tenta acessar o site para acessá-lo, a plataforma Akamais roteia você para a cópia hospedada no Servidor mais próximo de você. Se isso soar como uma tarefa que pode ser comodizada, você está certo. Leighton admite prontamente que a indústria de CDN é uma cidade lotada, não é tão difícil criar um servidor perto de áreas com grandes populações de usuários de internet. No entanto, Akamai ainda consegue dominar seu nicho. A Apple tem sido um cliente desde 1999, quando se associou pela primeira vez com a empresa para aumentar o desempenho do QuickTime. Hulu também usa o Akamai para acelerar o seu streaming de vídeo, assim como a BBC, o site da China Central Television e a Casa Branca. E o vídeo não é a única coisa que serve: os gigantes de jogos Sony e Nintendo são ambos clientes, assim como startups como Airbnb, varejistas como o Best Buy e até mesmo o Departamento de Defesa dos Estados Unidos. Para lhe dar uma idéia da medida em que a Akamai está esmagando sua concorrência, o relatório de ganhos mais recentes (PDF) mostra que trouxe 1.58 bilhões de receitas no ano passado (principalmente da CDN), dos 2.36 bilhões estimados trazidos pelo Mercado total de CDN no ano passado. Embora a Akamai tenha recebido muita cobertura na imprensa de tecnologia focada na Apple recentemente, graças a este relatório, a Apple vai começar a expandir sua infraestrutura CDN para uso dos consumidores, Leighton disse à Business Insider que acredita que os dois continuarão a ser parceiros fortes nos anos futuros. Na verdade, esta não é a primeira vez que um cliente da Akamai decidiu tentar implementar sua própria infra-estrutura CDN. Com o menor sorriso, Leighton nos disse: pode demorar alguns anos para que eles percebam isso, mas muitos acham que fazer isso é mais difícil do que parece. VEJA TAMBÉM: Heres o aplicativo que Marc Andreessen estava delirando no Twitter Esta empresa de 10 bilhões que você nunca ouviu falar é a razão de sua internet é FastAkamai chutou o jornalista Brian Krebs site fora de seus servidores depois que ele foi atingido por um cyberattack recorde O gigante de hospedagem na nuvem Akamai As tecnologias derrubaram o site administrado pelo jornalista Brian Krebs a partir de seus servidores depois que o site veio sob um ciberataque recorde. É provável que o KrebsOnSecurity esteja desconectado por algum tempo, Krebs cizrou na quinta-feira. Akamais chutando-me de sua rede esta noite. Desde terça-feira, o site da Krebs sofreu uma denegação de serviço distribuída sustentada, ou DDoS, um método grosseiro de inundar um site com tráfego para negar que usuários legítimos possam acessá-lo. O assalto inundou o site de Krebs com mais de 620 gigabits por segundo de tráfego quase o dobro do que o Akamai viu no passado. Para colocá-lo mais claramente: é o equivalente digital de bloquear um monte de gunk em um tubo de drenagem. Eventualmente, a água não será capaz de passar. Os sites segmentados por este tipo de ataque geralmente diminuem por um curto período e, em seguida, voltam online. E para os anfitriões, os ataques significam a mudança de recursos para diferentes servidores para mitigar os danos. Eu realmente não posso culpar a Akamai pela decisão, acrescentou Krebs. Provavelmente custei uma tonelada de dinheiro hoje. Não parece que a remoção de sites dos servidores Akamais seja porque a empresa não conseguiu lidar com o ataque. Em vez disso, é mais provável que Krebs tenha se desgastado de sua bem-vinda no serviço, o que provavelmente está perdendo dinheiro lidando com um ciberataque para um site que hospedava gratuitamente. Antes que todos batizem no AkamaiProlexic demais, eles estavam me fornecendo o serviço pro bono. Então, como eu disse, não falo com eles. O ataque pode estar relacionado ao relatório recente da Krebs em um site chamado vDOS, um serviço supostamente criado por dois homens israelenses que levariam a cabo ataques cibernéticos em nome dos clientes pagantes. Pouco depois que Krebs informou no site, os dois homens foram presos e o site ficou fora de linha. Akamai não quis comentar. Esta publicação foi atualizada com novas informações de Brian Krebs que seu site foi hospedado pro bono. VEJA TAMBÉM: 14 empresas de ponta financiadas pela CIA Akamai expulsaram o jornalista Brian Krebs de seus servidores depois que ele foi atingido por um ciberataque recorde