NewSQL

NewSQL is a new database access language. It is easier to learn than SQL, elegant, consistent, and well defined. It is not a extension or subset of SQL, and not a Object database language. It is based on top of the cross database library LDBC.

Why another language?

Reasons: SQL is outdated, too complex and has many flaws. Object databases are not the future.

What about existing applications and databases?

Converters: Existing applications and databases are supported. Two types of converters will be built: SQL > NewSQL and NewSQL > SQL. (SQL means all major SQL dialects). That not only helps migration, it also allows to run existing applications with different databases.

What is the functionality of NewSQL?

Functionality: Here are some first ideas. The functionality of the language will be standardized.
Survey: Please vote for what you think the lanugage should look like!

How does the new language look like?

Grammar: That is not defined yet. The project is in the 'brainstorming' phase. There are currently 2 proposals, Jdb (Java-database) and S2 (SQL II), at some point one will be used. The grammar is kept as simple as possible. Here some examples how it could look like:
SQL
NewSQL 'Jdb'
NewSQL 'S2'
CREATE TABLE TEST(
  ID INT PRIMARY KEY,
  NAME VARCHAR(255)
)
test=new table(
  int id,
  string name,
  key(id)
)
create table test(
  id int,
  name string,
  primary key(id)
)
INSERT INTO TEST VALUES(1,'Hello')
test.add(1,"Hello")
insert test (1,'Hello')
SELECT * FROM TEST
test.get()
select test
SELECT T1.ID,T2.NAME FROM
TEST T1, TEST T2
WHERE T.ID=T2.ID
t1=test; t2=test;
t1.join(t2[t1.id==t2.id]).get(t1.id,t2.name)
select t1:test join t2:test on t1.id==t2.id get t1.id, t2.name
UPDATE TEST SET NAME='Hi' WHERE ID=1
test[id==1].set(name="Hi")
update test set id=1 where name=='Hi'
DELETE FROM TEST WHERE ID=1
test[id==1].delete()
delete test where id==1
DROP TABLE TEST
test.drop()
drop test

License

Apache Software License is used for the converters, but the language is public domain.

SourceForge Logo