When you sign up, you get $10 in free credits so that you can start getting acquainted with the platform.
TileDB Cloud charges in three ways:
$0.11 / CPU / hour for a task time: This is the time it takes for a task from beginning to completion. Depending on the task and user parameters (see Array Access, Serverless SQL and Serverless UDFs), the number of CPUs used will be different. This price of $0.11 per CPU-hour is based on 1 CPU usage. The time is multiplied by the number of CPUs used in the task. At the end of the month, usage is summed up and rounded to the nearest second.
$0.14 / GB of data egress: This is the amount of data retrieved from the service to your client, not the data processed by a query. Egress is summed up and rounded to the GB at the end of the month.
$0.06 / CPU / hour for the notebook server duration: Notebooks are charged for how long the server is running and based on the size of the server. See Jupyter Notebooks for the instance types along with the number of CPUs for each type.
In TileDB Cloud you need to register your own data, which you must currently store in your own cloud buckets. TileDB Cloud does not offer storage hosting. You just register your already existing cloud-stored arrays (created with TileDB Open Source), and TileDB Cloud manages access and computation on those arrays without unnecessary copying and movement of the data.
All access via the web console, excluding notebook usage, is free and no charges are applied. TileDB Cloud bills you monthly.
The TileDB Cloud pricing suggests that you should minimize the data you request at your client, and instead try to either perform SQL / UDFs that reduce the data, or write the data back to cloud storage (e.g., which can be done with both SQL and UDFs).
You do not bear any extra charge for a public array or an array you shared with other users. Only the user that accesses the array gets charged for usage.
Suppose you run a UDF which takes five minutes and returns no data to your client outside TileDB Cloud. Assume also that the UDF uses 2 CPUs. You will then be charged:
Query time: (5 / 60) hours * 2 CPUs * $0.11 per CPU-hour = $0.0183
Data retrieved: $0.00
Total: $0.02
Suppose you slice 3 GB from a TileDB array using TileDB Cloud and the read access takes 45 seconds. Suppose the read query uses 16 CPUs. You will be charged:
Task time: (0.75 / 60) hours * 16 CPUs * $0.11 per CPU-hour = $0.0225
Egress: 3 GB * $0.14 per GB = $0.42
Total: $0.0225 + $0.42 = $0.44
Suppose you write 256 MB to a TileDB array and the write request takes 20 seconds. Suppose the write query uses 16 CPUs. You will be charged:
Query time: (0.33 / 60) hours * 16 CPUs * $0.11 per CPU-hour = $0.01
Data retrieved: 0 (no charge for writing, but see note below)
Total: $0.01
Each write may read back a few bytes (e.g., for acknowledgements), thus incurring some minimal egress. This is added to the final billing but it is negligible as compared to the query time.
Suppose you run a serverless SQL query which performs an aggregation on some TileDB array slice that takes 90 seconds. If the result is 1MB, you are charged:
Query time: (1.5 / 60) hours * 16 CPUs * $0.11 per CPU-hour = $0.044
Data retrieved: (1 / 1024) GB * $0.14 per GB = $0.00013671875
Total: $0.044
Observe that you pay only for the 1 MB you retrieved (which is negligible), regardless of how many bytes the UDF processed. You can see here the benefit of reductions with serverless computations.
Suppose you run a small notebook instance (2 CPUs) and keep it active for 8 hours. You will be charged:
Notebook time: 8 hours * 2 CPUs * $0.06 per CPU-hour = $0.96
Suppose you run a large notebook (16 CPUs) and keep it active for 30 minutes. You will be charged:
Notebook time: 0.5 hours * 16 CPUs * $0.06 per CPU-hour = $0.48
Our pricing is experimental. Contact us to provide feedback or if you need more free credits for your evaluation.
If you do not belong to any organization, then all charges (array access, UDF, SQL, notebooks) are directed to your personal account. If you belong to one or more organizations, the following rules apply:
For SQL, UDFs and notebooks , TileDB Cloud charges the user's first organization (the one the user joined first).
For array access, TileDB Cloud determines how the user got access to the array. Suppose the user is called user
and belongs to one or more organizations, but the "first" is called org
. Here are the possible scenarios:
Array owned by user
-> user
is charged.
Array owned by org
-> org
is charged
Array owned by another organization org2
, shared with org
-> org
is charged
Array owned by org2
, shared with org
AND shared with user
directly -> Error unless
Default namespace to charge
is configured (see below)
Array owned by another user user2
(not an organization) -> user
is charged
TileDB Cloud also allows you to specify explicitly who to charge:
Every programmatic request has a namespace
argument that allows you to specify the account to charge (e.g., see Selecting Who to Charge for SQL).
In your profile Settings
, there is a field called Default namespace to charge
.