WakandaDB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:59, 30 января 2019.
WakandaDB
Wakanda.png
Разработчики: Wakanda SAS
Выпущена: 2013; 7 years ago (2013)
Постоянный выпуск: 2.1.0 / July 2017; 2 years ago (2017-07)
Написана на: C++ and JavaScript
Операционная система: Linux, OS X, Windows
Платформа: x86-64
Локализация: EN
Тип ПО: NoSQL БД
Лицензия: AGPLv3
Веб-сайт wakanda.org

WakandaDB - это встроенная NoSQL БД с открытым исходным кодом и REST API, входит в состав Wakanda[Источник 1]. Также она является встроенным хранилищем в Wakanda IDE. Использует объектно ориентированную модель хранения данных. Обработка информации, создание таблиц и прочие операции выполняются с использованием V8[Источник 2] (ранее JavaScriptCore). Соответствует требованиям ACID[Источник 3]. Есть поддержка нескольких потоков запросов.

WakandaDB является частью веб-инфраструктуры с открытым исходным кодом для разработки веб-приложений и мобильных приложений на JavaScript - Wakanda.

История

В 2008 году была впервые представлена концепция WakandaDB на Ajax Experience, а затем в 2009 году на JSConf.eu. Закрытый предварительный просмотр для разработчиков стал доступен в 2010 году с первой версией Wakanda Studio, включающей в себя конструктор моделей и конструктор графического интерфейса. Wakanda привлекла к себе внимание общественности в июне 2011 года новым выпуском Developer Preview, со вторым общедоступным Developer Preview, анонсированным во время конференции «Wakanday - JS.everywhere (Boston, October 2011)», и первой бета-версией 15 декабря. WakandaDB была доступна в виде версии Live Release с 15 марта 2012 года.

28 июня 2012 года была официально выпущена первая версия Wakanda, а с ней и WakandaDB. 26 октября 2012 года это было продемонстрировано на конференции JS.everywhere () в США и Франции.

До 2014 года[Источник 4] была отделена от платформы и имела отдельный веб-сайт. После слияния с платформой прекратилось упоминание о продукте как о самостоятельной БД.

Возможности

Основные возможности данной базы данных[Источник 5]:

  • Манипуляции с данными производятся посредством REST API и SSJS, без ORM слоя.
  • Высокая скорость обработки запросов. Возможность напрямую обращаться к моделям и данным и управлять ими с помощью JavaScript.
  • Возможность запрашивать, сортировать, добавлять, обновлять и удалять объекты для оптимизации доступа к данным.
  • Создание пользователей и групп, настройка разрешений и параметров доступа группы, аутентификация пользователей с помощью Digest и Kerberos.
  • Развертывание на облаке (IaaS / PaaS)
  • Оптимизации для вертикальной масштабируемости (muti-threaded, preemptive, thread-safe)
  • Соответствие стандартам: JSON, REST / HTTP. Возможность интеграции в любые AJAX фреймворки (например Dojo, YUI, DHTMLX), мобильными приложениями (iOS, Android), серверами (например PHP, .NET, Java, NodeJS, Python).
  • Обслуживание и настройка WakandaDB выполняется из браузера.

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

Пример определения модели данных в WakandaDB на JavaScript:

model = new DataStoreCatalog();
var Person = model.addClass("Person", "People");
Person.addAttribute("firstName","storage","string");
Person.addAttribute("lastName" ,"storage","string");
Person.addAttribute("name", "calculated", "string");
Person.name.onGet = function()
{
  return this.firstName + ' ' + this.lastName;
}
Person.addAttribute("company", "relatedEntity", "Company", "Companies");

Пример использования REST API:

$curl -X GET http://wakandadbhost/rest/Country(1)

{
  __entityModel: "Country",
  __KEY: "1",
  __STAMP: 1,
  ID: 1,
  name: "France",
  code2Chars: "fr",
  companies: {
    __deferred: {
      uri: "/rest/Country(1)/companies?$expand=companies"
    }
  }
}

WakandaDB предоставляет универсальный Ajax драйвер, способный предоставить прокси модели для БД в любом браузере. Он состоит из двух слоёв "поставщик данных" и "источник данных". Поставщик данных обеспечивает привязку данных к любому JavaScript-приложению или к любому существующему Ajax фреймворку. Источник данных предоставляет механизм публикации / подписки для любого используемого им элемента (виджеты, другие источники данных, и др ...).[Источник 6]


Ajax запрос:

var vcount;
var myset = ds.Person.query("ID > 100 and ID < 300", {
    // we pass a function that receives the server response
    onSuccess: function(event) 
    {
        vcount = event.entityCollection.length;
        // we retrieve the size of the entity collection
        $("#display").html("selection : "+vcount);
        // display the size of the entity collection in the container whose ID is "display"
    }
});

Источники

  1. Wakanda // Github. [2010-2015]. Дата обновления: 23.05.2017. URL: https://wakanda.github.io/ (дата обращения: 30.09.2018)
  2. WakandaDB // Twitter. [2006-2019]. Дата обновления: 11.01.2019. URL: https://twitter.com/wakandadb (дата обращения: 30.09.2018)
  3. WakandaDB System Properties // DB-engines. [2002-2019]. Дата обновления: 03.11.2018. URL: https://db-engines.com/en/system/WakandaDB (дата обращения: 30.09.2018)
  4. Define a Data Model in JSON or JavaScript // Web-Archive. [2012-2015]. Дата обновления: 16.08.2018. URL: https://web.archive.org/web/20140521090823/http://wakandadb.org:80/ (дата обращения: 30.09.2018)
  5. Wakanda Features List // Web-Archive. [2010-2015]. Дата обновления: 01.12.2018. URL: https://web.archive.org/web/20150826105144/http://www.wakanda.org:80/features?qt-wakanda_features=1#qt-wakanda_features (дата обращения: 30.09.2018)
  6. WakandaDb // Web-Archive. [2012-2015]. Дата обновления: 08.01.2019. URL: https://web.archive.org/web/20140521090823/http://wakandadb.org:80/ (дата обращения: 30.09.2018)