-
Notifications
You must be signed in to change notification settings - Fork 4
david-pfx/Andl
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Andl is A New Database Language. See http://andl.org. Andl is a New Database Language designed to replace SQL and then go beyond. Andl is a full programming language with an advanced type system; it is relationally complete and has higher order queries; and it has platform independent interfacing. So Andl does two things well: perform advanced relational queries and build an application data model. First, Andl can perform relational queries at or beyond the capabilities of any SQL dialect. It can do all the ordinary things like select, where and join but it can also do generative queries, self-joins, complex aggregations, subtotals and running totals (a bit like SQL recursive common table expressions and windowing). And Andl can provide a complete application backend for any kind of user interface on any platform. It can easily be used to program a data model as a set of tables just like SQL, but including all the access routines, updating logic and interfaces. These can be accessed on any platform: mobile, desktop, web or cloud. The user interface can be written in any popular language or technology, such as Java, Dot Net, JavaScript and using any available communications method. Andl has its own in-memory database and a persistence mechanism for simple tasks and experimentation. It can also use a relational database backend, with Sqlite and now Postgres in the latest release. Sample programs are included to demonstrate these capabilities. FIRST DO THIS ============= Grab the binary release and unzip it somewhere. Go to the Sample folder in a command prompt and run the following commands. C>runsamples.bat -- set up the sample databases, compile and run programs C>runwb.bat -- run the workbench (next section) If you like to use the command line, then try these: C>run /? -- view the command line arguments C>run -- run test.andl, a tiny script C>run sample1.andl C>run sample2.andl C>run sample3.andl C>run sample4.andl C>run sample5.andl C>run sample6.andl The default program is 'test.andl' and the default catalog is 'db'. Andl reads program source code, compiles and executes the program and then stores compiled operators, types and global variables in a catalog, where they can be used by other programs. In the Workbench you can see the contents of the catalog. Here are the sample programs. sample1.andl -- scalar expressions sample2.andl -- basic relational expressions sample3.andl -- advanced relational expresions sample4.andl -- more complex examples sample5.andl -- ordering and grouping (like SQL Window) sample6.andl -- subtyping (work in progress) Also take a look at: DbixCdSample.andl -- converted SQL sample family_tree.andl -- self-join using functions SPPsample1.andl -- more converted SQL recursive.andl -- self-joins using while (like SQL CTE recursive) 100doors.andl -- the 100 doors puzzle 99bottles.andl -- the 99 bottles lyrics fibonacci.andl -- 100 fibonacci numbers - fast! mandelbrot.andl -- mandelbrot set using while sudoku-orig.andl -- sudoku solver using while chinook.andl -- popular relational database of songs (SQL only) You can run all the samples like this. runsamples runsamples sql -- uses Sqlite runsamples pg -- requires a default installation of Postgres WORKBENCH ========= The Workbench is an interactive program to view a database amd its catalog, and to execute queries. 1. Choose a database and see the relations and contents of its catalog. Choose Workbench. 2. The Andl program 'workbench.andl' is loaded by default. Press F5 to run it. 3. Press F7 to reload the catalog and F5 to run it again. 4. Or try Ctrt+N for a new program and Ctrl+F7 for a new catalog. Function keys ------------- F5 to run the current program in its entirety. Select text and F5 to run part of a program as a query. F7 to reload the catalog (you get errors if you try to define something twice). Ctrl+F7 to load a new empty catalog. SQLITE ====== Each of the samples can be run using Sqlite, as shown. All relations are stored in Sqlite as native tables. Apart from performance and two unimplemented features, the behaviour is identical. If you like, you can use the sqlite3.exe program to verify that this is so. C>sqlite3.exe <name>.sqandl ".dump" THRIFT ====== Thrift is a platform-agnostic interface and remote procedure call technology. More details at http://thrift.apache.org/. Andl has a built-in capability to generate Thrift interfaces, and the Andl.Thrift project is a Thrift server. The ThriftTest folder contains samples for the Thrift implementation. ThriftTest contains a client-server sample based on Apache Thrift. Run it like this: cd ThriftTest run-thrift.bat run-thrift.bat sql -- Sqlite ThriftSupplierPart contains another client-server sample based on Apache Thrift. Run it like this: cd ThriftSupplierPart run-thriftsp.bat run-thriftsp.bat sql -- Sqlite TEST SUITE ========== Test contains the test suite. Run them like this: cd Test runsuite.bat runsuite.bat sql -- Sqlite runsuite.bat pg -- requires a default installation of Postgres HOST ==== Andl.Host is a server for a native Web API and a REPL interface based on WCF. When run it is self-testing. It also contains a mini-website that is a REPL client, which should be launced in a local browser. Run it like this: cd Host run-host.bat run-host.bat sql -- Sqlite SERVER ====== Andl.Server is a server for a JSON and REST Web API based on ASP.NET MVC. When run it launches a browser to show sample programs. For JSON and REST Web API the backend is Andl and the client is a JavaScript Single Page Application. The amount of code to produce a working application is small. The REPL page is not yet working. BUILDING ANDL ============= The source code can be downloaded from https://github.com/davidandl/Andl. The project should build 'out of the box' in Visual Studio 2015 with the .NET Framework 4.5, and possibly earlier versions. It builds an executable program that compiles and runs Andl programs, and several other components. The batch file build-rls.bat clones the repository and builds using MSBUILD. LICENCE ======= This version of Andl is free for any kind of experimental use, especially helping to make it better. For now, the licence does not grant rights for distribution or commercial use. That will have to wait until I can choose the right licence, which depends a lot on who might want to use it. Andl is built using a variety of components including Sqlite, Newtonsoft Json, Pegasus, Avalon Edit, Thrift, Jquery, Knockout. The reader is referred to those products for relevant licence terms. Please contact me with any questions or suggestions at david@andl.org.
About
Andl is A New Database Language
Topics
Resources
Stars
Watchers
Forks
Packages 0
No packages published