MySQL NDB Cluster API Developer Guide
This class is used to generate and obtain information about
sessions
(Session
objects). To create an instance, use the Node.js
require()
function with the driver name, like
this:
var nosql = require("mysql-js");
ConnectionProperties
can be used to retrieve
or set the connection properties for a given session. You can
obtain a complete set of of default connection properties for a
given adapter using the ConnectionProperties
constructor, shown here, with the name of the adapter (a string)
used as the value of
nameOrProperties
:
ConnectionProperties(nameOrProperties
);
You can also create your own
ConnectionProperties
object by supplying a
list of property names and values to a new
ConnectionProperties
object in place of the
adapter name. Then you can use this object to set the connection
properties for a new session, as shown here:
var NdbConnectionProperties = { "implementation" : "ndb", "ndb_connectstring" : "localhost:1186", "database" : "test", "mysql_user" : "root", "ndb_connect_retries" : 4, "ndb_connect_delay" : 5, "ndb_connect_verbose" : 0, "linger_on_close_msec": 500, "use_ndb_async_api" : false, "ndb_session_pool_min" : 4, "ndb_session_pool_max" : 100, }; var sharePath = '/usr/local/mysql/share/nodejs'; // path to share/nodejs var nosql = require(sharePath); var dbProperties = nosql.ConnectionProperties(NdbConnectionProperties);
It is also possible to obtain an object with the adapter's default connection properties, after which you can update a selected number of these properties, then use the modified object to set connection properties for the session, as shown here:
var sharePath = '/usr/local/mysql/share/nodejs'; // path to share/nodejs var spi = require(sharePath + "/Adapter/impl/SPI"); // under share/nodejs var serviceProvider = spi.getDBServiceProvider('ndb'); var NdbConnectionProperties = serviceProvider.getDefaultConnectionProperties(); NdbConnectionProperties.mysql_user = 'nodejs_user'; NdbConnectionProperties.database = 'my_nodejs_db'; var dbProperties = nosql.ConnectionProperties(NdbConnectionProperties);
The ConnectionProperties
object includes the
following properties:
implementation
: For Node.js applications
using NDB Cluster, this is always “ndb”.
ndb_connectstring
: NDB Cluster connection
string used to connect to the management server.
database
: Name of the MySQL database to
use.
mysql_user
: MySQL user name.
ndb_connect_retries
: Number of times to
retry a failed connection before timing out; use a number
less than 0 for this to keep trying the connection without
ever stopping.
ndb_connect_delay
: Interval in seconds
between connection retries.
ndb_connect_verbose
: 1 or 0; 1 enables
extra console output during connection.
linger_on_close_msec
: When a client
closes a DBConnectionPool
, the underlying
connection is kept open for this many milliseconds in case
another client tries to reuse it.
use_ndb_async_api
: If true, some
operations are executed using asynchronous calls for
improved concurrency. If false, the number of operations in
transit is limited to one per worker thread.
ndb_session_pool_min
: Minimum number of
DBSession
objects per
NdbConnectionPool
.
ndb_session_pool_max
: Maximum number of
DBSession
objects per
NdbConnectionPool
.
Each NdbConnectionPool
maintains a pool
of DBSession
objects, along with their
underlying Ndb
objects.
This parameter, together with
ndb_session_pool_min
, sets guidelines for
the size of that pool.
The
TableMapping
constructor is also visible as a top-level function. You can get
the mapping either by name, or by using an existing mapping:
TableMapping(tableName
); TableMapping(tableMapping
);
openSession(properties
,mappings
, Function(err
, Session)callback
);
Connect to the data source and get a
Session
in the callback
function. This is
equivalent to calling connect()
(see later in
this section), and then calling getSession()
on the
SessionFactory
that is returned in the callback function.
Executing this method could result in connections being made to many other nodes on the network, waiting for them to become ready, and making multiple requests to them. You should avoid opening new sessions unnecessarily for this reason.
The implementation member of the
properties
object determines the
implementation of the
Session
.
If mappings
is undefined, null, or an
empty array, no mappings are loaded or validated. In this case,
any required mappings are loaded and validated when needed
during execution. If mappings
contains a string or a constructor function, the metadata for
the table (or mapped table) is loaded from the database and
validated against the requirements of the mapping.
Multiple tables and constructors may be passed to
openSession()
as elements in an array.
connect(properties
,mappings
, Function(err
, SessionFactory)callback
);
Connect to the data source to obtain a
SessionFactory
in the callback
function. In order to
obtain a
Session
,
you must then call getSession()
on this
SessionFactory
, whose implementation is
determined by the implementation member of the
properties
object.
If mappings
is undefined, null, or an
empty array, no mappings are loaded or validated. In this case,
any required mappings are loaded and validated when needed. If
mappings
contains a string or a
constructor function, the metadata for the table (or mapped
table) is loaded from the database and validated against the
requirements of the mapping.
Multiple tables and constructors may be passed as elements in an array.
Array getOpenSessionFactories()
Get an array of all the
SessionFactory
objects that have been created by this module.
The following functions are part of the public API but are not
intended for application use. They form part of the contract
between Mynode
and
SessionFactory
.
Connection()
getConnectionKey()
getConnection()
newConnection()
deleteFactory()