Fully Managed Database-as-a-Service A rock-solid, high performance database platform that provides NoSQL and SQL access.


Your database architecture with Amisalabs

We take care of data synchronization and integration saving you thousands of lines of code & weeks of work.



Your application

Your applications talks directly to the SQL layer. You can add search, graph, analytic, or geospatial queries with a simple SQL API (AmisaSQL).

AmisaSQL

AmisaSQL is a SQL engine that stores its data in PostgreSQL, inheriting its incredible properties. It is suited for both OLTP and OLAP applications. The SQL API supports such features as hierarchical modeling of relational tables, the ability to access data as JSON documents using nested SQL, powerful indexing using column store indexes, parallel execution of queries, and much more.

Cache Layer

Amisalabs integrates Memcached; the simple yet powerful high-performance, memory object caching system for automatic caching to speed up applications.

Amisa Column Store Indexes

The In-memory Column Store Indexes are used for processing aggregations and structured search queries.

Full Text Search Layer

Amisalabs builds on top of Apache Lucene to integrate powerful full-text search capabilities.

Amisalabs Key-Value Store

Amisalabs uses PostgreSQL as a key value and row store. All data is safely stored, distributed, and replicated in the Key value component using AmisaSQL. With AmisaSQL you can store many types of data in a single database.



Built by developers for developers

Amisalabs provides the most complete database service for rapid application development. Bring your data, and we'll manage your deployment so that you can focus on your product instead of operations.

High Performance

Powered by the fastest NoSQL and NewSQL database technologies today.

Scalable

Cloud computing power on demand. Use as much or as little as you need.

Enterprise-grade

99.99% uptime SLA, plus advanced security to protect sensitive data.

Amazing support

Our DBMS operations experts have your back, from development to production.

  • CREATE
  • INSERT
  • UPDATE
  • DELETE
  • SELECT
  • SELECT JSON
  • TRANSACTIONS
  • STORED PROCEDURES
  • DATA MIGRATION

Relational API

-- Creating Relational Tables CREATE TABLE Test ( Id INT64 IDENTITY, LMessage STRING TEXTINDEX, Tags STRING ARRAY Crets DATETIME ); CREATE TABLE #MyTempTable ( a1 int32, a2 int64 ) -- Temporary tables are in memory only -- and always garbage collected when all DDL and DML -- Statements in the execution context is complete

Document API

-- Create document collections -- Collections can have some predefined -- attributes to create indexes automatically CREATE COLLECTION TestC ( Id INT64 IDENTITY ); CREATE COLLECTION UC () -- Collections are dynamic and can be -- defined without attributes CREATE COLLECTION #TempCollections () -- Temporary collections are in memory only

Relational API

INSERT INTO Test (LMessage, Tags, Crets) VALUES ('DML Insert test', ArrayCreate('a', 'b'), GetDate()), ('DML Multi Insert', ArrayCreate('a', 'b'), GetDate()) SELECT * FROM TTable INTO PTable

Document API

INSERT INTO TESTC { Message : 'Test', Tags : ['unit', 'db'], Ts : getdate(), h : [{ a : 1, b : 2 }] }

Relational API

UPDATE Test s INNER JOIN VTable u on DatePart('year', s.Crets) = u.Year SET s.LMessage = 'Hello world'

Document API

UPDATE TESTC { Tags : ArrayPush('JSON', Tags), h : [{$UPDATE : WHERE b = 2, c : 3, a : 2 }] } WHERE DatePart('year', Ts) = 2015 -- Deleting nested documents UPDATE TESTC { h : [{ $DELETE : WHERE b = 2 }] }

Relational API

DELETE FROM UTable WHERE tag IN ('a', 'b')

Document API

DELETE FROM TestC WHERE h.a = 1 AND Tags IN ('a', 'b') AND ArrayLength(Tags) < 5

Relational API

SELECT * FROM ClientsTB WHERE TextSearch({ query : 'dbaas options', proximity : 1 }, Dsummary) AND GeoSearch(city, ToGeoPoint('43.7,79.4'), 20) AND RegTs BETWEEN DateAdd('month' -24, getdate()) AND getdate() -- Table joins (Inner, Left) are supported SELECT a.a1 a.a2, e.e3 FROM t1 a LEFT JOIN t2 e ON a.id = e.id

Document API

-- Documents can be normalized using SQL Select -- There is no ETL required. SELECT the_count, Count(*) FROM ( SELECT make, model, count(*) as the_count FROM AutosSearchCollection GROUP BY make, model WHERE GeoSearch(dealer_city, ToGeoPoint('43.7,79.4'), 20) ) -- Documents can be joined to other documents -- as well as other tables. -- Joined documents are automatically flatted. SELECT make, model, price FROM AutosSearchCollection s INNER JOIN DealerRatingsTable e ON s.dealer_id = e.dealer_id WHERE e.rating > 3

Relational API

-- Perform Graph queries and advanced joins with AmisaSQL -- Front end developers can receive Json from multiple -- tables with simple SQL. SELECT JSON { $p : (SELECT * FROM Users WHERE status = 1 LIMIT 10), id : p.id, name : p.name, friends : [{ $f : (SELECT * FROM USERS s INNER JOIN Ftable e ON e.useri = s.id WHERE e.friendi = p.id), * : f -- Read all attributes from (f) }] }

Document API

-- More advanced runtime Document Transformations -- Consider the below document -- { threadid : 23, Content : 'Sample Thread', Comments : [ {...} ], UserLikes : [ {...} ] }, -- Consider at runtime, Only the Comments, Content -- and total count of UserLikes to be returned. SELECT JSON { $s : (SELECT * FROM ThreadsCollection WHERE threadid = 23), Content : s.Content, UserLikesCount : (SELECT Count(UserLikes.UserId) FROM s), Comments : [ $p : (SELECT Comments.UserId, Comment.Comment FROM s), * : p -- Return all attributes from ($p) ] }

Relational API

CREATE PROCEDURE MY_PROC (PARAM1, PARAM2) BEGIN -- DDL AND DML Statements -- Both Document and Relational API statements are -- allowed DECLARE s = 20, e = 30; BEGIN TRANS END TRANS END

Document API

CREATE PROCEDURE MY_PROC (PARAM1, PARAM2) BEGIN -- DDL AND DML Statements -- Both Document and Relational API statements are -- allowed DECLARE s = 20, e = 30; BEGIN TRANS END TRANS END

Relational API

-- Move data from popular SQL Server -- MySQL, PostgreSQL and ODBC Data sources SELECT * FROM ('postgresql -t my_table -c "[Enter connection string]') INTO My_amisa_sql_table SELECT * FROM ('sqlserver -t my_table -c "[Enter connection string]') INTO My_amisa_sql_table

Document API

-- Move data from MongoDB, Elastic Search -- and Generic REST Endpoints SELECT * FROM ('mongodb -t mongo_collection -c "[Mongo Connection string]"') INTO My_amisa_sql_collection SELECT * FROM ('esearch -t my_collection -c "[Http endpoint]"') INTO My_amisa_sql_collection

Relational API

-- Read committed isolation mode BEGIN TRANS IF ( (SELECT Count(*) FROM e) > 20 ) BEGIN FOREACH IN My_table s BEGIN END END END TRANS

Document API

-- Read committed isolation mode BEGIN TRANS IF ( (SELECT Count(*) FROM e) > 20 ) BEGIN FOREACH IN My_collections s BEGIN END END END TRANS

Successful startups and leading companies choose Amisalabs.

"Amisalabs helped simplify our data layer by eliminating our previous architecture which involved a cache layer, search engine layer and relational database. Today we are not writing integration code as Amisalabs provides us with in-memory indexing, full text search, analytics and storage in one platform." CTO and founder of Demanjo News.



DEVELOPERS

  • Documentation
  • FAQ

COMPANY

  • About Us
  • Blog
  • Polices
  • Contact

STAY IN TOUCH



PRODUCT UPDATES