Connect to CrateDB¶
Authentication¶
Note
These examples authenticate as crate, the default database user in
CrateDB versions 2.1.x and later.
If you are using CrateDB 2.1.x or later, you must supply a username. If you are using earlier versions of CrateDB, this parameter is not supported.
See the compatibility notes for more information.
If you have not configured a custom database user, you probably want to
authenticate as the CrateDB superuser, which is crate. The superuser
does not have a password, so you can omit the password argument.
DBAL¶
If you plan to query CrateDB via DBAL, you can get a connection from the
DriverManager class using standard DBAL parameters, like so:
use Doctrine\DBAL\DriverManager;
$params = array(
'driverClass' => 'Crate\DBAL\Driver\PDOCrate\Driver',
'user' => 'crate',
'host' => 'localhost',
'port' => 4200
);
$connection = DriverManager::getConnection($params);
$schemaManager = $connection->createSchemaManager();
With these connection parameters, the DriverManager will attempt to
authenticate as crate with a CrateDB node listening on localhost:4200.
See also
For more help using DBAL, consult the DBAL documentation.
Doctrine ORM¶
If you want to use the Object-Relational Mapping (ORM) features of Doctrine,
you must set up an EntityManager instance.
Here’s a slightly modified version of the Doctrine provided example:
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
$paths = array("/path/to/entity-files");
$isDevMode = false;
// the connection configuration
$params = array(
'driverClass' => 'Crate\DBAL\Driver\PDOCrate\Driver',
'user' => 'crate'
'host' => 'localhost',
'port' => 4200
);
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($params, $config);
Here’s what we changed in the above example:
Specified the CrateDB driver class
Specified the
crateuserConfigured the connection for
localhost:4200
See also
The CrateDB DBAL driver provides three custom type objects. Consult the data types appendix for more information about type maps and column type definitions.
Eventual consistency¶
Note that CrateDB is primarily an analytical database for big data, so it implements eventual consistency and does not support traditional ACID transactions.
Please use REFRESH TABLE for establishing read-after-write consistency when applicable.
Next steps¶
Use the standard the DBAL documentation or Doctrine ORM documentation for the rest of your setup process.