AlaSQL

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:58, 26 сентября 2020.
AlaSQL
fraimed
Создатели: Андрей Гершун
Выпущена: 2014; 7 years ago (2014)
Постоянный выпуск: 0.6.2 / 31 May 2020 года; 16 months ago (2020-05-31)
Предыдущий выпуск: 0.6.1 / 20 May 2020 года; 16 months ago (2020-05-20)
Состояние разработки: Активна
Написана на: Java
Веб-сайт Официальная страница

AlaSQL-это легкая клиентская БД SQL в оперативной памяти, предназначенная для работы в браузере и Node.js.[Источник 1]

API-интерфейс предназначен для:

  • Быстрой обработки данных SQL в оперативной памяти для BI-и ERP-приложений на fat-клиентах.
  • Легкого ETL и вариантов для импорта данных / манипуляцией / экспорта нескольких форматов
  • Работы во всех основных браузерах, Node.js, и мобильных приложениях

AlaSQL фокусируется на скорости, используя динамическую природу JavaScript при создании запросов. Реальные решения требуют гибкости в том, откуда берутся данные и где они должны храниться. Так же фокусируется на гибкости, убедившись, что вы можете импортировать/экспортировать и запрашивать непосредственно данные, хранящиеся в файлах Excel, CSV, JSON, TAB, IndexedDB, LocalStorage и SQLite.

Установка

Для того, что бы выполнить установку AlaSQL необходимо ввести данные команды:[Источник 2]

yarn add alasql
npm install alasql
npm install -g alasql

Производительность

AlaSQL очень сосредоточен на скорости, поэтому используются следующие трюки: [Источник 2]

  • Запросы кэшируются как скомпилированные функции
  • Объединенные таблицы предварительно индексируются

Результаты хорошие. Проверьте AlaSQL против других баз данных javaScript SQL:

Дополнительные тесты:

Примеры использования

Традиционная таблица SQL:[Источник 3]

/* create SQL Table and add data */
alasql("CREATE TABLE cities (city string, pop number)");

alasql("INSERT INTO cities VALUES ('Paris',2249975),('Berlin',3517424),('Madrid',3041579)");

/* execute query */
var res = alasql("SELECT * FROM cities WHERE pop < 3500000 ORDER BY pop DESC");

// res = [ { "city": "Madrid", "pop": 3041579 }, { "city": "Paris", "pop": 2249975 } ]

Живая демонстрация


Массив объектов:

var data = [ {a: 1, b: 10}, {a: 2, b: 20}, {a: 1, b: 30} ];

var res = alasql('SELECT a, SUM(b) AS b FROM ? GROUP BY a',[data]);

// res = [ { "a": 1, "b": 40},{ "a": 2, "b": 20 } ]

Живая демонстрация


Массовая загрузка данных:

alasql("CREATE TABLE example1 (a INT, b INT)");

// alasql's data store for a table can be assigned directly
alasql.tables.example1.data = [
    {a:2,b:6},
    {a:3,b:4}
];

// ... or manipulated with normal SQL
alasql("INSERT INTO example1 VALUES (1,5)");

var res = alasql("SELECT * FROM example1 ORDER BY b DESC");

console.log(res); // [{a:2,b:6},{a:1,b:5},{a:3,b:4}]

Особенности AlaSQL

Определяемые пользователем функции в вашем SQL[Источник 3]

Вы можете использовать все преимущества SQL и JavaScript вместе, определив свои собственные пользовательские функции. Просто добавьте новые функции в alasql.fn :

alasql.fn.myfn = function(a,b) {
    return a*b+1;
}
var res = alasql('SELECT myfn(a,b) FROM one');

Скомпилированные инструкции и функции

var ins = alasql.compile('INSERT INTO one VALUES (?,?)');
ins(1,10);
ins(2,20);

Чтение и запись файлов Excel и raw-данных

Вы можете импортировать и экспортировать в файлы CSV, TAB, TXT и JSON.

var tabFile = 'mydata.tab'

alasql.promise([
        "select * from txt('mytext.txt') where [0] like 'M%'",
        ["select * from tab(?) order by [1]", [tabFile]],   // note how to pass parameter when promises are chained
        "select [3] as city,[4] as population from csv('cities.csv')",
        "select * from json('array.json')"
    ]).then(function(results){
        console.log(results)
    }).catch(console.error)

Чтение файлов базы данных SQLite

    <script src="alasql.js"></script>
    <script src="sql.js"></script>
    <script>
        alasql('ATTACH SQLITE DATABASE Chinook("Chinook_Sqlite.sqlite");\
            USE Chinook; \
            SELECT * FROM Genre',[],function(res){
                console.log("Genres:",res.pop());
        });
    </script>

Взаимодействие AlaSQL с другими платформами

Источники

  1. AlaSQL [2014 —]. URL : http://alasql.org/ (дата обращения 20.06.2020)
  2. 2,0 2,1 2,2 AlaSQL // Github [2014 —]. URL : https://github.com/agershun/alasql (дата обращения 20.06.2020)
  3. 3,0 3,1 AlaSQL Documentation [2014 —]. URL : https://alasql-wiki.readthedocs.io/en/latest/readme.html (дата обращения 20.06.2020)