Giter Club home page Giter Club logo

xsk's Introduction

Important Notice

This public repository is read-only and no longer maintained.

Project "XSK"

Description

Compatible environment for SAP HANA Extended Application Services (XS) based applications. It is deployed outside of SAP HANA instance as a Docker a container on Kubernetes. Hence, some of the features can work against any other JDBC compliant RDBMS such as PostgreSQL. The compatibility stack is an extension of the Eclipse Dirigible cloud development platform.

Note: the project is not yet ready to be used productively

Overview

Background

In the SAP Cloud Platform Neo environment XS classic programming model (XSC) is supported via the HANA 1.x database. The XSC engine resides in the HANA system itself. It can scale up, but cannot scale out. It is based on the multi-threaded JavaScript runtime Mozilla Spydermonkey (Firefox's engine). It supports synchronous programming model. It can serve backend services in JavaScript, HTML5 and other static content. It supports OData v2.0 compatible services defined in an *.xsodata descriptors. It supports automatic tables, views, calculationviews materialisation based on proprietary formats.

XSK approach is to provide a custom Eclipse Dirigible stack coming with XSC engine type. This engine is based on the standard Dirigible's JavaScript engine with several enhancements such as predefined XSC API pre-loaded ($.* APIs), execution based on *.xsjs instead of *.js only, imports based on *.xsjslib instead of *.js.

There are corresponding APIs in Dirigible playing the same role as the ones in XSC (e.g. request, response, connection, etc.). A thin XSC bridge is provided for full compatibility.

The programming model is synchronous in multi-threaded environment (based on GraalJS). The descriptors for the table, views and calculationviews currently exists with the same life-cycle management, only the format is different. OData via descriptor approach is also available as part of the stack as well.

XSK stack is based on Java (JVM), so all the available plugins and/or new frameworks from Apache, Eclipse, and other open source providers can be easily integrated as well.

XSK stack can run within the HANA box, also in the virtual HANA system or outside in e.g. Kubernetes cluster, Kyma, Cloud Foundry, Open Stack.

Requirements

  • Maven 3.6.2 or later
  • Access to SAP BTP account
  • Access to SAP HANA Cloud instance

Download and Installation

git clone https://github.com/SAP/xsk
cd xsk
mvn clean install

FAQ

  • How long will XSK be supported by SAP?

    XSK is an open source project with community support as of now. Everyone can join and make a PR.

  • Should future developments be based on XSK?

    Yes, you can use XSK for future development.

  • What about the tooling? Do we get state of the art tooling for maintaining and enhancing XSK?

    XSK tooling is based on Eclipse Dirigible and in the near future it will be possible to maintain XSK projects with any modern IDE like VSCode, Eclipse Theia, etc.

  • What about the ops aspects - will XSK be smoothly integrated into a state-of-the-art lifecycle and ops management (be it SAP-based or non-SAP based like GitHub Actions?

    Yes, the XSK itself uses GitHub actions for CI/CD

  • Will there be limitations that will not be mitigated?

    You can get the up-to-date list of covered features as well as the limitations

Cheat Sheet

Visit the cheat sheet here.

Readiness

Visit the readiness page here.

How to obtain support

All the bug reports as well as the feature requests have to be registered as issues.

Contributing

If you want to contribute, please check the Contribution Guidelines

xsk's People

Contributors

ageorgievg avatar aihanrashidov avatar alexkuklin avatar antoanetamh avatar astefanova avatar borisnen avatar cheezus1 avatar delchev avatar dependabot[bot] avatar dimitarquanterall avatar dpanayotov avatar dspenchev avatar fluctuationqt avatar grozevjunior avatar ivanvolkoff avatar krasimirdermendzhiev avatar liliyalazarova avatar llazarova avatar marinhadzhiev avatar misappi avatar satanasovv avatar sebastianwolf-sap avatar stanzgenchev avatar svgradev avatar tdermendjiev avatar thuf avatar vmutafov avatar wildflowerr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xsk's Issues

Missing docker image in docker hub

Step "Pulling images" in the README file: The command docker pull dirigiblelabs/xsk-server does not work, because the image specified is missing in the docker hub, we should add it.

[Parsers] Incorrect handling of the length property in hdbtable files

Incorrect handling of the length property in hdbtable files:

table.schemaName = "TEST";
table.tableType = COLUMNSTORE;
table.columns = [
	{ name = "PROVIDER_ID";				sqlType = NVARCHAR;	length = 32;	nullable = false; }
];
table.primaryKey.pkcolumns = ["PROVIDER_ID"];

is materialised as NVARCHAR(1)

[CI/CD] Release to DockerHub GitHub Action

Create a GitHub action, so that when a new branch/tag (vX.Y.Z e.g. v1.0.0) is created, it triggers a "release" procedure to Docker Hub with the corresponding version (tag).

Depends on: #5

[Parsers] Enhance the hdbtable parser to distinguish between old and new format

Enhance the hdbtable parsers to distinguish between old and new format

Old:

table.schemaName = "MYSCHEMA";
table.tableType = COLUMNSTORE;
table.columns = [
	{name = "Col1"; sqlType = VARCHAR; nullable = false; length = 20; comment = "dummy comment";},
	{name = "Col2"; sqlType = INTEGER; nullable = false;},
	{name = "Col3"; sqlType = NVARCHAR; nullable = true; length = 20; defaultValue = "Defaultvalue";},
	{name = "Col4"; sqlType = DECIMAL; nullable = false; precision = 2; scale = 3;}];
table.indexes =  [
	{name = "MYINDEX1"; unique = true; indexColumns = ["Col2"];},
	{name = "MYINDEX2"; unique = true; indexColumns = ["Col1", "Col4"];}];
table.primaryKey.pkcolumns = ["Col1", "Col2"];

New:

COLUMN TABLE "com.sap.hana.example::CUSTOMERS" ( 
   "ID" INTEGER, "NAME" NVARCHAR(256),
   "ACTIVE" TINYINT,
   "COUNTRY" NVARCHAR(256),
   PRIMARY KEY ("ID") )

Old:
https://help.sap.com/viewer/cc2b23beaa3344aebffa2f6e717df049/2.0.03/en-US/89cbf999e6004be3a5324b8f9ef0c53f.html

New:
https://help.sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.02/en-US/453d48e28f6747799546236b4b432e58.html

[Parsers] Enhance the hdbview parser to distinguish between old and new format

Enhance the hdbview parsers to distinguish between old and new form

Old:

schema="MYSCHEMA";
query="SELECT T1.\"Column2\" FROM \"MYSCHEMA\".\"acme.com.test.views::MY_VIEW1\" AS T1 LEFT JOIN \"MYSCHEMA\".\"acme.com.test.views::MY_VIEW2\" AS T2 ON T1.\"Column1\" = T2.\"Column1\"";
depends_on=["acme.com.test.views::MY_VIEW1", "acme.com.test.views::MY_VIEW2"];

New:

VIEW "com.sap.hana.example::ACTIVE_CUSTOMERS" 
AS SELECT ID, NAME
FROM "com.sap.hana.example::CUSTOMERS" 
WHERE ACTIVE = '1'

Old:
https://help.sap.com/viewer/cc2b23beaa3344aebffa2f6e717df049/2.0.03/en-US/78dcb8e2f4f14b53b0d333bcd24f8721.html

New:
https://help.sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.02/en-US/2bf9a6f2db824fbd84315196a9c318d5.html

[CI/CD] Release to GitHub GitHub Action

Create a GitHub action, so that when a new branch/tag (vX.Y.Z e.g. v1.0.0) is created, it triggers a "release" procedure to GitHub with the corresponding version (tag) and uploads the corresponding binary file(s) (e.g. ROOT.war).

Depends on: #5

[Parsers] hdbdd

[CalculationView] [Parsers] Migrate to hdbcalculationview

calculationview to hdbcalculationview migration task to be implemented as action in the Web IDE. Due to the differences of the format and handling of the old and new calculation views, there is a need of a pre-processing before the artefact hdbcalculationview be added to the HDI container along with the corresponding synonyms.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.