Monday Mar 31, 2014

MySQL Cluster in Environments Requiring Real-Time Analytics

MySQL Cluster is used by many different industries. MySQL Cluster thrives in the most complex data environments that demand real-time analytics such as:

  • Financial trading with fraud protection
  • Feed-streaming analysis and recommendations
  • Massive online multiplayer games
  • Communication services

To learn more about MySQL Cluster, take the MySQL Cluster training course. Below is a selection of events already on the schedule for this 3-day instructor led course:

 Location  Date  Delivery Language
 Sao Paolo, Brazil
 28 April 2014
 European Portuguese
 Berlin, Germany
 26 May 2014
 German
 Hamburg, Germany
 29 September 2014
 German
 Munich, Germany
 14 April 2014
 German
 Rome, Italy
 12 May 2014
 Italian
 Petaling Jaya, Malaysia
 16 July 2014
 English
 Warsaw, Poland
 4 June 2014
 Polish
 San Francisco, CA, United States
 28 May 2014
 English

To register for an event, request an additional event, or learn more about the authentic MySQL curriculum, go to http://education.oracle.com/mysql.

Monday Feb 10, 2014

MySQL Cluster is a Resilient and Scalable Database Platform

MySQL Cluster is a highly resilient and scalable database platform designed to deliver 99.999% availability with features such as self-healing and online operations, and capable of performing over 1,00,000,000 updates per minute. The full feature set includes development and management platforms alongside monitoring and administration tools, all backed by Oracle Premier Lifetime Support.

To learn more about MySQL Cluster, consider taking the MySQL Cluster training. Events already on the schedule for this 3-day instructor-led course include:

 Location

 Date

 Delivery Language

 Berlin, Germany

 26 May 2014

 German

 Munich, Germany

 14 April 2014

 German

  Rome, Italy

 17 February 2014

 Italian

 Petaling Jaya, Malaysia

 16 July 2014

 English

 Warsaw, Poland

 12 March 2014

 Polish

 San Francisco, CA, United States

 28 May 2014

 English

To register for this course, to request an additional event, or to learn more about the authentic MySQL curriculum go to http://education.oracle.com/mysql.

Monday Jan 06, 2014

MySQL Cluster, Shared-Nothing Clustering and Auto-Sharding

MySQL Cluster is a technology providing shared-nothing clustering and auto-sharding for the MySQL database management system. It is designed to provide high availability and high throughput with low latency, while allowing for near linear scalability.

To learn more about MySQL Cluster, take the 3-day MySQL Cluster training course. Below is a selection of events already on the schedule for this course.

 Location

 Date

 Delivery Language

 Berlin, Germany

 10 February 2014

 German

 Munich, Germany

 14 April 2014

 German

Jakarta Barat, Indonesia 

 27 January 2014

 English

 Seoul, Korean

 24 February 2014

 Korean

 Petaling Jaya, Malaysia

20 October 2014 

 English

 Warsaw, Poland

 12 March 2014

 Polish

 Bangkok, Thailand

 28 January 2014

 English

 San Francisco, CA, United States

 28 May 2014

 English

To register for an event, to request an additional event, to learn more about this course or about other courses on the authentic MySQL curriculum, go to http://education.oracle.com/mysql.

Monday Nov 11, 2013

Join Companies in Web and Telecoms by Adopting MySQL Cluster

Join Web and Telecom companies who have adopted MySQL Cluster to facilitate application in the following areas:

Web:

  • High volume OLTP
  • eCommerce
  • User profile management
  • Session management and caching
  • Content management
  • On-line gaming

Telecoms:

  • Subscriber databases (HLR/HSS)
  • Service deliver platforms
  • VAS: VoIP, IPTV and VoD
  • Mobile content delivery
  • Mobile payments
  • LTE access

To come up to speed on MySQL Cluster, take the 3-day MySQL Cluster training course. Events already on the schedule include:

 Location

 Date

 Delivery Language

 Berlin, Germany

 16 December 2013

 German

 Munich, Germany

 2 December 2013

 German

 Budapest, Hungary

 4 December 2013

 Hungarian

 Madrid, Spain

 9 December 2013

 Spanish

 Jakarta Barat, Indonesia

 27 January 2014

 English

 Singapore

 20 December 2013

 English

 Bangkok, Thailand

 28 January 2014

 English

 San Francisco, CA, United States

 28 May 2014

 English

 New York, NY, United States

 17 December 2013

 English

For more information about this course or to request an additional event, go to the MySQL Curriculum Page (http://education.oracle.com/mysql).

Monday Sep 30, 2013

Extreme Real-Time Performance With MySQL Cluster

For those looking for extreme real-time performance, high availability and speed, consider MySQL Cluster.

In the MySQL Cluster training, within 3 days, you learn to:

  • Describe the different nodes in MySQL Cluster
  • Install, start and stop nodes
  • Understand and work with configuration files
  • Upgrade a cluster
  • Explain node failure and understand how restart works
  • Configure the cluster for optimal performance

Here is a selection of the events currently scheduled for this live instructor-led course:

 Location

 Date

 Delivery Language

 Bordeaux, France

 6 November 2013

 French

 Berlin, Germany

 16 December 2013

 German

 Munich, Germany

 2 December 2013

 German

 Budapest, Hungary

 4 December 2013

Hungarian 

 Warsaw, Poland

 14 October 2013

 Polish

 Barcelona, Spain

 4 November 2013

 Spanish

 Madrid, Spain

 9 December 2013

 Spanish

 Bangkok, Thailand

 28 Jaunary 2014

 English

 Jakarta Barat, Indonesia

 27 January 2014

 English

 Seoul, Korea

 21 October 2013

 Korean

Singapore

 30 December 2013

 English

 San Francisco, CA, United States

 28 May 2014

 English

 New York, NY, United States

 17 December 2013

 English

To register for an event or to learn more about the authentic MySQL curriculum, go to http://oracle.com/education/mysql.

Monday Aug 05, 2013

Tap into the 5 Nines of MySQL Cluster with Oracle Training

With its distributed, shared-nothing architecture, MySQL Cluster has been designed to deliver 99.999% availability ensuring resilience to failures and the ability to perform scheduled maintenance without downtime.

With the MySQL Cluster training course, in 3 days, you learn important clustering concepts as well as how to install and configure MySQL Cluster and manage cluster nodes. 

Below is a selection of events already on the schedule.

 Location

 Date

 Delivery Language

 Bordeaux, France

 6 November 2013

 French

 Strasbourg, France

 4 September 2013

 French

 Berlin, Germany

 16 December 2013

 German

 Munich, Germany

 2 September 2013

 German

 Stuttgart, Germany

 30 September 2013

 German

 Budapest, Hungary

 4 December 2013

 Hungarian

 Rome, Italy

 16 September 2013

 Italian

 Seoul, Korea

 6 August 2013

 Korean

To register for this course, to register your interest in additional events, or to learn more about the authentic MySQL curriculum, go to http://oracle.com/education/mysql.

Monday Jun 17, 2013

Meet Database Challenges with MySQL Cluster

MySQL Cluster enables users to meet the database challenges of next generation web, cloud, and communications services with uncompromising scalability, uptime and agility. With the MySQL Cluster training course:

  • Learn how to develop, deploy, manage and scale your MySQL Cluster applications more efficiently
  • Keep your mission-critical applications and essential services up and running 24x7
  • Deliver the highest performance and scalability using MySQL Cluster best practices

    Below is a selection of events on the schedule for this 3 day instructor-led course:

     Location

     Date

     Delivery Language

    Bordeaux, France

     6 November 2013

     French

    Strasbourg, France

     4 September 2013

     French

    Berlin, Germany

     16 December 2013

     German

    Hamburg, Germany

     1 July 2013

     German

    Munich, Germany

     2 September 2013

     German

    Stuttgart, Germany

     30 September 2013

     German

    Budapest, Hungary

     4 December 2013

     Hungarian

    Warsaw, Poland

     19 August 2013

     Polish

    Barcelona, Spain

     12 August 2013

     Spanish

    Madrid, Spain

     26 August 2013

     Spanish

    Jakarta, Indonesia

     5 August 2013

     English

    Seoul, Korea

     5 August 2013

     Korean

    Singapore

     5 August 2013

     English

    Irvine, CA, United States

     24 July 2013

     English

    To register for this course, or to learn more about the authentic MySQL curriculum, go to http://oracle.com/education/mysql.
  • Monday Apr 22, 2013

    See the benefits of MySQL Cluster through Oracle Training

    If the following items items describe what you need in a high-availability solution, then MySQL Cluster is for you:

    • High scale, reads and writes
    • 99.999% availability
    • Real-time
    • SQL and NoSQL
    • Low TCO

    And what better way to get started on MySQL Cluster than taking the authentic MySQL Cluster training course.

    In this 3-day course, you learn important cluster concepts and get hands-on experience installing, configuring and managing a cluster. Some events already on the schedule for this course include:

     Location

     Date

     Delivery Language

     London, England

     12 June 2013

     English

     Hamburg, Germany

     1 July 2013

     German

     Munich, Germany

     10 June 2013

     German

     Budapest, Hungary

     19 June 2013

     Hungarian

     Warsaw, Poland

     10 June 2013

     Polish

     Barcelona, Spain

     12 August 2013

     Spanish

     Madrid, Spain

     10 June 2013

     Spanish

     Istanbul, Turkey

     27 May 2013

     Turkish

     Irvine, CA, United States

     24 July 2013

     English

     Edison, NJ, United States

     29 May 2013

     English

     Jakarta, Indonesia

     5 August 2013

     English

    For more information on this course or other courses on the authentic MySQL curriculum, go to http://oracle.com/education/mysql.

    Wednesday Apr 17, 2013

    MySQL Cluster 7.3 DMR2: Increasing Developer Flexibility and Simplicity

    Highlights: Foreign Keys, NoSQL JavaScript Connector, MySQL 5.6 and Auto-Tuned Clustering

    The MySQL team at Oracle are excited to announce the immediate availability of the second MySQL Cluster 7.3 Development Milestone Release (DMR)

    Some might call MySQL Cluster 7.3 “the foreign keys release” – and sure enough it is a major engineering achievement to build a distributed database that enforces referential integrity across a shared-nothing cluster, while maintaining ACID compliance and cross-shard JOINs. But MySQL Cluster 7.3 is a lot more as well. 

    The design focus has been on enabling developer agility – making it simpler and faster than ever to enhance new services with a highly scalable, fault tolerant, real-time database – with minimum development or operational effort. 

    The key enhancements delivered by MySQL Cluster 7.3 are summarized below.

    Foreign Keys: Strengthens data modeling and simplifies application logic by automatically enforcing referential integrity between different tables distributed on different shards, on different nodes…..even in different data centers 

    NoSQL JavaScript Connector for Node.js: Enables a single programming language and a single tool-chain by extending JavaScript from the client to the server, all the way through to the database, bypassing the SQL layer to deliver lower latency and reduced development cycles.  

    MySQL 5.6 Support: Developers can combine the InnoDB and MySQL Cluster NDB storage engines within a single database, using the very latest MySQL 5.6 release.

    Connection Thread Scalability: Increases cluster performance and capacity by improving the throughput of each connection to the data nodes, thus reducing the number of connections that need to be provisioned, and enabling greater scale-out headroom.  Current testing is showing up to 3x higher throughput per connection, enabling more client threads to use each connection. 

    Auto-Installer: Get it all up and running in minutes! Graphically configure and provision a production-grade cluster, automatically tuned for your workload and environment, without ever resorting to “RTFM”.  

    MySQL Cluster: Automated Tuning and Configuration  

    Read the MySQL Cluster 7.3 DMR2 DevZone article for more detail on all of the enhancements discussed above.

    You can download the source and binaries for MySQL Cluster 7.3 DMR2 today (select the Development Releases tab).  


    MySQL Cluster Tutorial: NoSQL JavaScript Connector for Node.js

    This tutorial has been authored by Craig Russell and JD Duncan

    The MySQL Cluster team are working on a new NoSQL JavaScript connector for MySQL. The objectives are simplicity and high performance for JavaScript users:

    - allows end-to-end JavaScript development, from the browser to the server and now to the world's most popular open source database

    - native "NoSQL" access to the storage layer without going first through SQL transformations and parsing.

    Node.js is a complete web platform built around JavaScript designed to deliver millions of client connections on commodity hardware. With the MySQL NoSQL Connector for JavaScript, Node.js users can easily add data access and persistence to their web, cloud, social and mobile applications.

    While the initial implementation is designed to plug and play with Node.js, the actual implementation doesn't depend heavily on Node, potentially enabling wider platform support in the future.

    Changes since the previous blog:

    - InnoDB is now supported via the mysql adapter (accesses data via the mysqld server)

    - Auto-increment columns are now supported

    - Default values in columns are now supported

    - Multiple databases are now supported

    - Column converters for JavaScript types that need special (user-written) mapping to database types are now supported

    - Queries that specify all columns of a primary or unique key index are now supported

    - When acquiring a connection or session, specific table or class metadata can be provided in order to pre-load database metadata and signal an error if not all metadata can be loaded

    - Users can now get metadata for tables by using the session.getMetadata function

    - The user interface to map JavaScript domain objects to database tables has been significantly simplified

    Implementation

    The architecture and user interface of this connector are very different from other MySQL connectors in a major way: it is an asynchronous interface that follows the event model built into Node.js.

    To make it as easy as possible, we decided to use a domain object model to store the data. This allows for users to query data from the database and have a fully-instantiated object to work with, instead of having to deal with rows and columns of the database. The domain object model can have any user behavior that is desired, with the NoSQL connector providing the data from the database.

    To make it as fast as possible, we use a direct connection from the user's address space to the database. This approach means that no SQL (pun intended) is needed to get to the data, and no SQL (and again) server is between the user and the data.

    The connector is being developed to be extensible to multiple underlying database technologies, including direct, native access to both the MySQL Cluster "ndb" and InnoDB storage engines. The current release supports ndb via both native access and mysqld; and supports InnoDB via mysqld.

    The connector integrates the MySQL Cluster native API library directly within the Node.js platform itself, enabling developers to seamlessly couple their high performance, distributed applications with a high performance, distributed, persistence layer delivering 99.999% availability.

    The following sections take you through how to connect to MySQL, query the data and how to get started.


    Connecting to the database

    A Session is the main user access path to the database. You can get a Session object directly from the connector using the openSession function:

    var nosql = require("mysql-js");

    var dbProperties = {

        "implementation" : "ndb",

        "database" : "test"

    };

    nosql.openSession(dbProperties, null, onSession);

    The openSession function calls back into the application upon creating a Session. The Session is then used to create, delete, update, and read objects.

    Default database

    Every session and connection to the database has a default database associated with it. When mapping domain objects to the database, or using a table name to identify a table, users can specify the database by using the explicit form for the table name: 'tableName.databaseName'. If users omit the databaseName, the default database associated with the session is used.

    This feature supports multi-tenancy by allowing the database name to be specified during connection, while allowing the table to dynamically refer to the specific database in use.

    Pre-load metadata for tables or domain objects

    If your application requires specific tables or domain objects to be available, you can specify the tables and domain objects in your connect or openSession function. For example, if you need the table 't_basic' and the domain object 'Employee' to run the application, you can specify these during the connect or openSession functions.

    nosql.openSession(dbProperties, ['t_basic', Employee], onSession);

    If the t_basic table or the mapped Employee domain object are not able to be used by the session, then an error will be signaled and the onSession callback will report the specific error.

    Getting Table metadata

    If getting metadata associated with your application's tables is important, you can get the information by using the session function getMetadata. This function will return information about the specified table in the same format as used in mapTable. You can get the names and types of the table's columns and use the information to dynamically access tables and columns.

    Reading data

    The Session can read data from the database in a number of ways. If you simply want the data from the database, you provide a table name and the key of the row that you want. For example, consider this schema:

    create table employee (

      id int not null primary key,

      name varchar(32),

      salary float

    ) ENGINE=ndbcluster;

    Since the primary key is a number, you can provide the key as a number to the find function.

    function onSession = function(err, session) {

      if (err) {

        console.log(err);

        ... error handling

      }

      session.find('employee', 0, onData);

    };

    function onData = function(err, data) {

      if (err) {

        console.log(err);

        ... error handling

      }

      console.log('Found: ', JSON.stringify(data));

      ... use data in application

    };

    If you want to have the data stored in your own domain model, you tell the connector which table your domain model uses, by specifying an annotation, and pass your domain model to the find function.

    function Employee = function(id, name, salary) {

      this.id = id;

      this.name = name;

      this.salary = salary;

      this.giveRaise = function(percent) {

        this.salary *= percent;

      }

    };

    annotations.mapClass(Employee, {'table' : 'employee'});

    function onSession = function(err, session) {

      if (err) {

        console.log(err);

        ... error handling

      }

      session.find(Employee, 0, onData);

    };

    Special Domain Object Property Types

    If your domain object uses types that do not map directly to database types, you can use column converters to transform domain types to database types.

    For example, if you have a domain type such as a MaritalStatus type that contains only values of type MARITAL_STATUS, you can define a conversion that translates domain object values into database values.

    var MARITAL_STATUS = {

    NEVER_MARRIED: {value: 0, code: 'N', name: 'NEVER_MARRIED'},

    MARRIED: {value: 1, code: 'M', name: 'MARRIED'},

    DIVORCED: {value: 2, code: 'D', name: 'DIVORCED'},

    lookup: function(value) {

    switch (value) {

    case 0: return this.NEVER_MARRIED; break;

    case 1: return this.MARRIED; break;

    case 2: return this.DIVORCED; break;

    default: return null; break;

    }

    }

    };


    // column converter for status

    var statusConverter = {

    toDB: function toDB(status) {

    return status.value;

    },

    fromDB: function fromDB(value) {

    return MARITAL_STATUS.lookup(value);

    }

    };

    Updating data

    You can update the emp instance in memory, but to make the changes persistent, you need to write it back to the database, using the update function.

    function onData = function(err, emp) {

      if (err) {

        console.log(err);

        ... error handling

      }

      console.log('Found: ', JSON.stringify(emp));

      emp.giveRaise(0.12); // gee, thanks!

      session.update(emp); // oops, session is out of scope here

    };

    Using JavaScript can be tricky because it does not have the concept of block scope for variables. You can create a closure to handle these variables, or use a feature of the connector to remember your variables.

    The connector api takes a fixed number of parameters and returns a fixed number of result parameters to the callback function. But the connector will keep track of variables for you and return them to the callback. So in the above example, change the onSession function to remember the session variable, and you can refer to it in the onData function:

    function onSession = function(err, session) {

      if (err) {

        console.log(err);

        ... error handling

      }

      session.find(Employee, 0, onData, session);

    };

    function onData = function(err, emp, session) {

      if (err) {

        console.log(err);

        ... error handling

      }

      console.log('Found: ', JSON.stringify(emp));

      emp.giveRaise(0.12); // gee, thanks!

      session.update(emp, onUpdate); // session is now in scope

    };

    function onUpdate = function(err, emp) {

      if (err) {

        console.log(err);

        ... error handling

      }

    Inserting data

    Inserting data requires a mapped JavaScript user function (constructor) and a session. Create a variable and persist it:

    function onSession = function(err, session) {

      var data = new Employee(999, 'Mat Keep', 20000000);

      session.persist(data, onInsert);

      }

    };

    Autoincrement Columns

    Columns allow but do not require users to specify the values for autoincrement columns. If users want to specify values for autoincrement columns, for example to reset the autoincrement value for the table, the insert function allows specification of values for these columns.

    But if users want to exploit the autoincrement functionality, they must avoid setting a value for autoincrement columns. When mysql-js detects that the user has not specified a value, the next value in sequence is used. In the callback for the insert operation, mysql-js has filled in the missing values.

    Default Values

    Columns that specify a default value allow but do not require users to specify the values for these columns. If users want to specify values for these columns, the insert function allows specification of 'undefined' for these columns. In these cases, mysql-js will use the default values for these columns.

    Deleting data

    To remove data from the database, use the session remove function. You use an instance of the domain object to identify the row you want to remove. Only the key field is relevant.

    function onSession = function(err, session) {

      var key = new Employee(999);

      session.remove(Employee, onDelete);

      }

    };

    More extensive queries

    Queries are defined using a builder pattern and then executed with parameters that can specialize the query and control the operation of the query.

    To define a query, use the createQuery function of Session. Provide a constructor function of a mapped domain object or a table name. The resulting QueryDomainType is returned in the callback. The QueryDomainType is a specialized object that has a property for each property in the user's domain object, or a property for each column in the table. These properties are of type QueryField, and they implement functions that allow you to compare column values of database rows to parameters supplied when you execute the query.

    session.createQuery(Employee, function(err, qdt) {

    // build and execute the query using qdt

    });

    To build the query, use the query domain type to filter the results. If nothing else is specified, executing the query will return all rows in the table mapped by Employee as an array of instances of Employee.

    To filter the results, similar to using a WHERE clause in SQL, specify a query predicate using the where function of the query domain type. To build a query predicate, you can compare fields in the query domain type to values provided as parameters, using common comparison functions such as equal, greater than, etc. To compare fields, use the query field functions that are created in the query domain type. You can combine predicates using AND and OR functions. For example,

    var salaryLowerBound = qdt.param('floor'); // define the formal parameter floor

    var compareSalaryLowerBound = qdt.salary.ge(salaryLowerBound); // compare the field salary to the floor

    var salaryUpperBound = qdt.param('ceiling'); // define the formal parameter ceiling

    var compareSalaryUpperBound = qdt.salary.le(salaryUpperBound); // compare the field salary to the ceiling

     

    var combinedComparisons = compareSalaryLowerBound.and(compareSalaryUpperBound);

    qdt.where(combinedComparisons); // specify the entire filter for the query

    The query api supports a fluent style of query composition. The query can be written as:

    qdt.where(qdt.salary.ge(qdt.param('floor')).and(qdt.salary.le(qdt.param('ceiling'))));

    The above query filter compares the salary greater or equal to parameter floor and less or equal to ceiling.

    Executing Queries

    Once the query has been built, you can execute the query, providing the actual parameters to be used in the query. The results of the query are returned as an array in the callback.

    qdt.execute({'floor': 40000, 'ceiling': 80000}, function(err, results) {

    if (err) throw Error('query failed');

    results.forEach(function(result) {

    console.out('Employee', result.name, 'has salary', result.salary);

    });

    }

    How to evaluate

    The MySQL Connector for JavaScript is available for download and forking from GitHub

    Since we are still in the development phase, feedback is especially valuable (so don't hesitate to leave comments on this blog, or head to the MySQL Cluster forum). Try it out and see how easy (and fast) it is to integrate MySQL Cluster into your Node.js platforms.

    You can also learn more about other previewed functionality of MySQL Cluster 7.3 Development Milestone Release DevZone article.

    Thursday Mar 14, 2013

    Boost your use of MySQL Cluster with Oracle Training

    Get the most out of your use of MySQL Cluster by attending the MySQL Cluster training course. This three day course:

    • Explains the concepts of MySQL Cluster in detail
    • Describes the different nodes in MySQL Cluster and their purposes
    • Explains how the data is distributed and replicated in the MySQL Cluster
    • Installs all the different nodes used in the MySQL Cluster
    • Starts and stop the different nodes as needed
    • Shows how the different configuration files work and be able to configure all possible types of clusters
    • Uses the cluster in single user mode, and explains when this is necessary
    • Shows how to upgrade cluster components and configuration settings
    • Explains how node failure is detected and handled in the cluster
    • Describes how node restart works internally
    • Explains how system restart works and when this type of restart is needed
    • Backups and restores the data from backups
    • Describes the internal parts of the data nodes
    • Explains how the different types of data scans are performed
    • Explains the difference between the different index types
    • Configures the cluster for optimal performance

    You can take this three day instructor-led class in a training center. Some events already on the schedule include:

     Location

     Date

     Delivery Language

     Edison, NJ, United States

     29 May 2013

     English

     Irvine, CA, United States

     24 July 2013

     English

    To learn more about this course, request an additional event, or see more courses on the MySQL curriculum, go to http://oracle.com/education/mysql

    Friday Mar 08, 2013

    MySQL Web Reference Architectures - Your Guide to Innovating on the Web

    MySQL is deployed in 9 of the top 10 most trafficked sites on the web including Facebook, Twitter, eBay and YouTube, as well as in some of the fastest growing services such as Tumblr, Pinterest and box.com

    Working with these companies has given MySQL developers, consultants and support engineers unique insight into how to design database-driven web architectures – whether deployed on-premise or in the cloud.

    The MySQL Web Reference Architectures are a set of documented and repeatable best practices for building infrastructure that deliver the highest levels of scalability, agility and availability with the lowest levels of cost, risk and complexity. 

    Four components common to most web and mobile properties are sized, with optimum deployment architectures for each:

    User authentication and session management

    Content management

    Ecommerce

    Analytics and big data integration

    The sizing is defined by database size and load, as shown below

    For each reference architecture, strategies for scaling the service and ensuring high availability are discussed, along with approaches to secure, audit and backup user data, and tools to monitor and manage the environment.

    The Reference Architectures cover the core underlying technologies supporting today’s most successful web services including:

    - MySQL Database

    - MySQL Cluster

    - MySQL Replication

    - Caching with Memcached and Redis

    - Big Data with Hadoop

    - NoSQL APIs

    - Geographic Redundancy

    - Hardware Recommendations

    - Operational Best Practices

    An example of the "Large" reference architecture is shown below

    To learn more:

    - Download the MySQL Web Reference Architectures Guide

    - View the MySQL Web Reference Architectures slides

    The Reference Architecture are designed as a starting point which we hope will enable you build the next web and mobile phenomenon!

    Monday Jan 28, 2013

    Take MySQL Cluster Training to Meet Database Challenges

    Take the authentic MySQL Cluster training to meet database challenges of next generation web, cloud and communication services with uncompromising scalability, uptime and agility.

    This 3 day instructor-led class provides you a full understanding of cluster concepts as they relate to MySQL Cluster  as well as how to properly configure and manage the cluster nodes to ensure high availability, how to install the different nodes and provide a better understanding of the internals of the cluster.

    Here are some of the events already on the schedule for this course:

     

     Location  Date  Delivery Language
     London, England
    20 March 2013
    English
     Rennes, France
    26 February 2013
    French
     Munich, Germany
    10 June 2013
     Germany
     Stuttgart, Germany
    26 March 2013
    Germany
     Budapest, Hungary
     19 June 2013
    Hungarian
    Milan, Italy
     3 April 2013
     Italian
    Warsaw, Poland
    18 March 2013
     Polish
     Barcelona, Spain
    4 March 2013
     Spanish
     Madrid, Spain
     25 February 2013
     Spanish
     Singapore 18 February 2013
     English
     Irvine, CA, United States
    24 July 2013
     English
     Chicago, IL, United States
     27 March 2013
     English
    Edison, NJ, United States
    29 May 2013
     English
     Reston, VA, United States
    6 February 2013
     English

     

    To learn more about this course or the entire MySQL curriculum, to register for an event, or to request additional events, go to http://oracle.com/education/mysql.

    Thursday Dec 13, 2012

    NoSQL Memcached API for MySQL: Latest Updates

    With data volumes exploding, it is vital to be able to ingest and query data at high speed. For this reason, MySQL has implemented NoSQL interfaces directly to the InnoDB and MySQL Cluster (NDB) storage engines, which bypass the SQL layer completely. Without SQL parsing and optimization, Key-Value data can be written directly to MySQL tables up to 9x faster, while maintaining ACID guarantees.

    In addition, users can continue to run complex queries with SQL across the same data set, providing real-time analytics to the business or anonymizing sensitive data before loading to big data platforms such as Hadoop, while still maintaining all of the advantages of their existing relational database infrastructure.

    This and more is discussed in the latest Guide to MySQL and NoSQL where you can learn more about using the APIs to scale new generations of web, cloud, mobile and social applications on the world's most widely deployed open source database

    The native Memcached API is part of the MySQL 5.6 Release Candidate, and is already available in the GA release of MySQL Cluster. By using the ubiquitous Memcached API for writing and reading data, developers can preserve their investments in Memcached infrastructure by re-using existing Memcached clients, while also eliminating the need for application changes.

    Speed, when combined with flexibility, is essential in the world of growing data volumes and variability. Complementing NoSQL access, support for on-line DDL (Data Definition Language) operations in MySQL 5.6 and MySQL Cluster enables DevOps teams to dynamically update their database schema to accommodate rapidly changing requirements, such as the need to capture additional data generated by their applications. These changes can be made without database downtime.

    Using the Memcached interface, developers do not need to define a schema at all when using MySQL Cluster.

    Lets look a little more closely at the Memcached implementations for both InnoDB and MySQL Cluster.

    Memcached Implementation for InnoDB

    The Memcached API for InnoDB is previewed as part of the MySQL 5.6 Release Candidate.

    As illustrated in the following figure, Memcached for InnoDB is implemented via a Memcached daemon plug-in to the mysqld process, with the Memcached protocol mapped to the native InnoDB API.


    Figure 1: Memcached API Implementation for InnoDB

    With the Memcached daemon running in the same process space, users get very low latency access to their data while also leveraging the scalability enhancements delivered with InnoDB and a simple deployment and management model. Multiple web / application servers can remotely access the Memcached / InnoDB server to get direct access to a shared data set.

    With simultaneous SQL access, users can maintain all the advanced functionality offered by InnoDB including support for Foreign Keys, XA transactions and complex JOIN operations.

    Benchmarks demonstrate that the NoSQL Memcached API for InnoDB delivers up to 9x higher performance than the SQL interface when inserting new key/value pairs, with a single low-end commodity server supporting nearly 70,000 Transactions per Second.

    Figure 2: Over 9x Faster INSERT Operations

    The delivered performance demonstrates MySQL with the native Memcached NoSQL interface is well suited for high-speed inserts with the added assurance of transactional guarantees.

    You can check out the latest Memcached / InnoDB developments and benchmarks here

    You can learn how to configure the Memcached API for InnoDB here

    Memcached Implementation for MySQL Cluster

    Memcached API support for MySQL Cluster was introduced with General Availability (GA) of the 7.2 release, and joins an extensive range of NoSQL interfaces that are already available for MySQL Cluster

    Like Memcached, MySQL Cluster provides a distributed hash table with in-memory performance. MySQL Cluster extends Memcached functionality by adding support for write-intensive workloads, a full relational model with ACID compliance (including persistence), rich query support, auto-sharding and 99.999% availability, with extensive management and monitoring capabilities.

    All writes are committed directly to MySQL Cluster, eliminating cache invalidation and the overhead of data consistency checking to ensure complete synchronization between the database and cache.


    Figure 3: Memcached API Implementation with MySQL Cluster

    Implementation is simple:

    1. The application sends reads and writes to the Memcached process (using the standard Memcached API).

    2. This invokes the Memcached Driver for NDB (which is part of the same process)

    3. The NDB API is called, providing for very quick access to the data held in MySQL Cluster’s data nodes.

    The solution has been designed to be very flexible, allowing the application architect to find a configuration that best fits their needs. It is possible to co-locate the Memcached API in either the data nodes or application nodes, or alternatively within a dedicated Memcached layer.

    The benefit of this flexible approach to deployment is that users can configure behavior on a per-key-prefix basis (through tables in MySQL Cluster) and the application doesn’t have to care – it just uses the Memcached API and relies on the software to store data in the right place(s) and to keep everything synchronized.

    Using Memcached for Schema-less Data

    By default, every Key / Value is written to the same table with each Key / Value pair stored in a single row – thus allowing schema-less data storage. Alternatively, the developer can define a key-prefix so that each value is linked to a pre-defined column in a specific table.

    Of course if the application needs to access the same data through SQL then developers can map key prefixes to existing table columns, enabling Memcached access to schema-structured data already stored in MySQL Cluster.

    Conclusion

    Download the Guide to MySQL and NoSQL to learn more about NoSQL APIs and how you can use them to scale new generations of web, cloud, mobile and social applications on the world's most widely deployed open source database

    See how to build a social app with MySQL Cluster and the Memcached API from our on-demand webinar or take a look at the docs

    Don't hesitate to use the comments section below for any questions you may have 

    Monday Dec 10, 2012

    Learn More About the Scalability, Uptime, and Agility of MySQL Cluster

    Learn more about the uncompromising scalability, uptime, and agility of MySQL Cluster by taking the authentic MySQL Cluster training course.

    During this three day class, you will learn how to properly configure and manage the cluster nodes to ensure high availability, how to install the different nodes as well as get a better understanding of the internals of the cluster.

    Events currently on the schedule for this class include:

     Location

     Date

     Delivery Language

     Wein, Austria

     4 February 2013

     German

    London, England 

    12 June 2013 

     English

     Rennes, France

    26 February 2013 

     French

     Hamburg, Germany

    21 January 2013 

     German

     Munich, Germany

     10 June 2013

    German 

     Stuttgart, Germany

     26 March 2013

     German

     Budapest, Hungary

     19 June 2013

     Hungarian

     Milan, Italy

     4 February 2013

     Italy

     Warsaw, Poland

     18 March 2013

     Polish

     Barcelona, Spain

     4 March 2013

     Spanish

     Madrid, Spain

    25 February 2013 

     Spanish

    Chicago, United States 

    27 March 2013 

     English

     Reston, United States

     6 February 2013

     English

     Jakarta, Indonesia

    21 January 2013 

    English 

     Singapore

    18 February 2013 

     English

    To register for an event or to see further details on this or other courses in the authentic MySQL curriculum, please go to http://oracle.com/education/mysql.

    About

    Get the latest updates on products, technology, news, events, webcasts, customers and more.

    Twitter


    Facebook

    Search

    Archives
    « April 2014
    SunMonTueWedThuFriSat
      
    2
    5
    6
    9
    10
    11
    12
    13
    15
    16
    17
    18
    19
    20
    23
    24
    25
    26
    27
    28
    29
    30
       
           
    Today