CrateDB (https://crate.io/products/cratedb/) é um banco de dados que oferece a sintaxe do Postgresql mas é mais escalável e mais rápido
Para instalar:
$ bash -c "$(curl -L try.crate.io)"
e ele já executará
alternativamente, faça o download (https://crate.io/download/) e extraia:
tar -xzf crate-*.tar.gz
cd crate-*
execute com
./bin/crate
Use a admin UI
http://localhost:4200/
instale o driver python
pip install crate
Conecte à ao nó:
connection = client.connect("localhost:4200")
Databases
O CrateDB não permite a criação de databases, então usa schemas
isslocation.py: (de https://crate.io/docs/crate/tutorials/en/latest/generate-time-series/python.html)
import time import requests from crate import client def position(): response = requests.get("http://api.open-notify.org/iss-now.json") position = response.json()["iss_position"] return f'POINT ({position["longitude"]} {position["latitude"]})' def insert(): # New connection each time try: connection = client.connect("localhost:4200") print("CONNECT OK") except Exception as err: print("CONNECT ERROR: %s" % err) return try: cursor.execute( "INSERT INTO iss (position) VALUES (?)", [position()], ) print("INSERT OK") except Exception as err: print("INSERT ERROR: %s" % err) return # Loop indefinitely while True: insert() print("Sleeping for 10 seconds...") time.sleep(10)
cursor = connection.cursor()
listar databases:
select datname from pg_database;
ou
show schemas;
crie um novo schema (database) criando uma nova tabela
create table my_schema.my_table ( pk int primary key, label text, position geo_point );
Para excluir uma 'database' ou schema exclua as tabelas. ao excluir a última tabela o schema será removido
drop table my_schema.my_table;
outro exemplo, apenas para criar uma database (schema)
create table my_new_db.empty ( id int primary key );
drop table my_new_db.empty;
Não é possível usar com o PyDAL porque o cratedb não tem suporte ao tipo Serial e não tem autoincrement