Как установить и использовать ArangoDB в Ubuntu 14.04

Вступление

ArangoDB - это база данных NoSQL. Он был создан в 2011 году, когда уже существовало много баз данных NoSQL, с целью создания комплексного решения для баз данных, которое могло бы охватывать различные варианты использования.

По своей сути ArangoDB - это document store, но это только начало. Вы можете запрашивать данные с помощью полноценного языка запросов (называемого AQL), ​​выполнять транзакции ACID, добавлять пользовательские конечные точки HTTP в виде приложений JavaScript с помощью https: //developers.google.com/v8/[embedded V8] и многое другое.

Так как ArangoDB обладает множеством функций, поначалу это может пугать, но после второго взгляда это совсем не сложно. Эта статья поможет вам установить ArangoDB и даст краткое представление о том, как можно использовать некоторые из его основных функций.

После завершения этого урока вы сможете:

  • Установите ArangoDB на Ubuntu 14.04

  • Настройте ArangoDB для базового использования

  • Вставить, изменить и запросить данные

Основные понятия

На протяжении всей статьи мы будем использовать некоторые основные понятия. Возможно, вы захотите ознакомиться с ними перед созданием проекта на ArangoDB:

  • Document Store: ArangoDB хранит данные в документах, в отличие от того, как данные хранятся в реляционных базах данных. Документы - это произвольные структуры данных, состоящие из пар key-value. Key - это строка, которая называет value (как столбец в реляционной базе данных). Value может быть любым типом данных, даже другим документом. Документы не привязаны ни к одной схеме.

  • Query Language: взаимодействуйте с вашими данными, используя API или язык запросов. В то время как первый оставляет много деталей пользователю API, язык запросов передает детали в базу данных. В реляционной базе данных SQL является примером языка запросов.

  • ACID: четыре свойства A Tomicity, C согласованность, I солидация и D Urability описывают гарантии транзакций базы данных. ArangoDB поддерживает ACID-совместимые транзакции.

  • V8: движок Google, поддерживающий Chrome, можно легко встроить в другое программное обеспечение. Использование его в ArangoDB позволяет использовать JavaScript внутри базы данных. Большая часть внутренней функциональности ArangoDB построена на JavaScript.

  • HTTP API: ArangoDB предоставляет HTTP API, позволяющий клиентам взаимодействовать с базой данных. API является resource ориентированный и может быть расширен с помощью JavaScript.

Предпосылки

Прежде чем мы начнем, убедитесь, что ваша Droplet настроена правильно:

Теперь вы должны войти на свой сервер, используя только что созданного пользователя. Все примеры в руководстве могут быть выполнены из домашнего каталога пользователя:

cd ~

Шаг 1 - Установка ArangoDB

ArangoDB поставляется с предварительной сборкой для многих операционных систем и дистрибутивов. Шанс велик, вам не нужно строить его из источника. Для получения более подробной информации, пожалуйста, обратитесь к ArangoDB documentation. Для этого урока мы будем использовать Ubuntu 14.04 x64.

Поскольку ArangoDB использует build сервис OpenSUSE, в первую очередь необходимо загрузить открытый ключ для своих репозиториев:

wget https://www.arangodb.com/repositories/arangodb2/xUbuntu_14.04/Release.key

Вам нужно + sudo + для установки ключа:

sudo apt-key add Release.key

Затем добавьте репозиторий apt и обновите индекс:

sudo apt-add-repository 'deb https://www.arangodb.com/repositories/arangodb2/xUbuntu_14.04/ /'
sudo apt-get update

Установите ArangoDB:

sudo apt-get install arangodb

Мы можем проверить, все ли прошло хорошо, запросив HTTP API:

curl http://localhost:8529/_api/version

Следующий вывод показывает, что ArangoDB запущен и работает:

Output{"server":"arango","version":"2.5.5"}

Шаг 2 - Доступ к командной строке с помощью arangosh

ArangoDB поставляется с + arangosh +, клиентом командной строки, который дает вам полный доступ к базе данных через ее среду выполнения JavaScript. Вы можете использовать его для запуска административных задач или сценариев в производстве.

Он также хорошо подходит для начала работы с ArangoDB и его основными функциями. Чтобы продолжить, начните сессию + arangosh + следующим образом:

arangosh

В результате получается в основном оболочка JavaScript, в которой вы можете запускать произвольный код JavaScript. Например, добавьте два числа:

23 + 19

Вы получите этот результат:

Output42

Если вы хотите углубиться в эту тему, введите + tutorial + в оболочку.

Шаг 3 - Добавление пользователя базы данных

В целях безопасности добавление пользователей возможно только из интерфейса командной строки + arangosh +. Вы все еще должны быть в оболочке + arangosh + из предыдущего шага.

Теперь давайте добавим нового пользователя * sammy *. Этот пользователь будет иметь доступ ко всей базе данных. Пока это нормально, но вы можете захотеть создать более ограниченных пользователей в производственной среде. Используйте безопасный ++.

require("org/arangodb/users").save("", "");

Теперь выйдите из оболочки + arangosh +:

exit

Шаг 4 - Настройка веб-интерфейса

ArangoDB поставляется с очень мощным веб-интерфейсом. Он предлагает возможности мониторинга, просмотра данных, интерактивной документации API, мощного редактора запросов и даже встроенного + arangosh +. Мы напомним об использовании веб-интерфейса для напоминания об этом уроке.

Чтобы сделать веб-интерфейс легкодоступным, мы должны предпринять некоторые приготовления:

  1. Включить аутентификацию

  2. Привязать ArangoDB к общедоступному сетевому интерфейсу

Включить аутентификацию

ArangoDB, как и многие другие базы данных NoSQL, поставляется с отключенной аутентификацией. * Настоятельно рекомендуется включить аутентификацию *, если вы запускаете ArangoDB в общей среде и / или хотите использовать веб-интерфейс. Более подробную информацию по этой теме см. В документации ArangoDB.

Активируйте аутентификацию в файле + / etc / arangodb / arangod.conf +. Вы можете запустить эту команду, чтобы создать файл резервной копии и установить для параметра + disable-authentication значение` + no + `:

sudo sed -i.bak 's/disable-authentication = yes/disable-authentication = no/g' /etc/arangodb/arangod.conf

Альтернативно, используйте текстовый редактор, чтобы установить для параметра «+ disable-authentication » значение « no +».

Перезапустите базу данных:

sudo service arangodb restart

Привязать ArangoDB к публичному сетевому интерфейсу

Настройте ArangoDB для прослушивания через общедоступный сетевой интерфейс. Сначала откройте файл + / etc / arangodb / arangodb.conf для редактирования:

sudo nano /etc/arangodb/arangod.conf

Найдите активную строку + endpoint +, которая должна находиться в конце блока + [server] + ниже раздела примеров. Обновите настройку, как показано ниже, используя IP-адрес вашего собственного сервера и порт + 8529 +.

/etc/arangodb/arangod.conf

. . .

endpoint = tcp://:8529

Так как + arangosh + использует свою собственную конфигурацию по умолчанию, нам также нужно изменить конечную точку в файле + / etc / arangodb / arangosh.conf +:

sudo nano /etc/arangodb/arangosh.conf

Опять же, убедитесь, что строка + endpoint + установлена ​​в + tcp: //: 8529 +.

/etc/arangodb/arangosh.conf

pretty-print = true

[server]
endpoint = tcp://:8529
disable-authentication = true

. . .

Теперь перезапустите ArangoDB еще раз:

sudo service arangodb restart

Шаг 5 - Доступ к веб-интерфейсу ArangoDB

Теперь вы должны иметь доступ к веб-интерфейсу в вашем браузере:

http://:8529

Пожалуйста, войдите в систему, используя имя пользователя и пароль, которые вы создали для базы данных на шаге 3.

Первый экран, который вы должны увидеть, - это панель с основными показателями сервера базы данных:

изображение: https: //assets.digitalocean.com/articles/arangodb-ubuntu1404/iKDjIgx.png [Панель мониторинга веб-интерфейса ArangoDB]

В центре верхней навигации вы увидите * DB: _system *. Это указывает на текущую выбранную базу данных. По умолчанию используется база данных + _system +. Некоторые административные задачи могут выполняться только в базе данных + _system +.

Для следующих разделов мы создадим базу данных для работы. Наведите указатель мыши на пункт меню * DB: _system * и щелкните ссылку * Управление базами данных *.

На следующей странице нажмите кнопку * Добавить базу данных *. Заполните форму для создания базы данных с именем + music_library +. Вы должны ввести то же имя пользователя и пароль, что и раньше, в этом диалоговом окне, иначе вы не сможете получить доступ к новой базе данных позже:

изображение: https: //assets.digitalocean.com/articles/arangodb-ubuntu1404/DA8kRTO.png [Создать новую БД в веб-интерфейсе]

Теперь мы готовы начать что-то делать с ArangoDB.

Шаг 6 - Выполнение операций CRUD с Arangosh

Мы пока оставим веб-интерфейс и вернемся к интерфейсу командной строки + arangosh +, чтобы охватить основные операции CRUD в ArangoDB. Позже мы снова рассмотрим те же операции в веб-интерфейсе, но выполнение этого в оболочке поможет нам лучше понять, как все работает.

Чтобы продолжить, вернитесь в командную строку вашего сервера. Подключитесь к новой базе данных + music_library +, используя свой логин и пароль:

arangosh --server.database music_library --server.username  --server.password

Создать коллекцию документов

Если вы пришли из реляционной базы данных, коллекция - это эквивалент ArangoDB таблицы в базе данных SQL. Мы создадим коллекцию для хранения песен в нашей музыкальной библиотеке:

db._createDocumentCollection('songs')

ArangoDB предоставляет серию methods для управления коллекциями. Большинство из них на данный момент не представляют интереса, но, пожалуйста, посмотрите на них, когда вы углубляетесь в ArangoDB. На данный момент мы сосредоточимся на операциях CRUD (создание, чтение, обновление и удаление), то есть на том, как получать реальные данные в базу данных и из нее.

Создание документов

Где бы у вас не было строк в базе данных на основе SQL, ArangoDB имеет Documents. Документы в ArangoDB являются объектами JSON. Каждый документ связан с коллекцией и имеет три основных атрибута: + _id +, + _rev + и + _key +.

Документ однозначно идентифицируется внутри базы данных с помощью его document handle, который состоит из имени коллекции и + _key +, разделенных + / +. Дескриптор документа хранится в поле + _id + документа. И + _key +, и + _id + похожи на первичный ключ в базе данных отношений.

Давайте добавим ваш первый документ в коллекцию + songs:

db.songs.save(
{ title: "Immigrant Song", album: "Led Zeppelin III", artist: "Led Zeppelin", year: 1970, length: 143, _key: "immigrant_song" }
)
Output{
 "error" : false,
 "_id" : "songs/immigrant_song",
 "_rev" : "11295857653",
 "_key" : "immigrant_song"
}

Объект + db + содержит все коллекции как свойства. Каждая коллекция предоставляет функции для взаимодействия с документами в этой коллекции. Функция + save + берет любой объект JSON и сохраняет его как документ в коллекции, возвращая вышеупомянутые основные атрибуты и информацию о том, произошла ли ошибка. Возврат из каждой операции снова является объектом JSON.

Чтобы поиграть, нам нужно еще несколько документов. Просто скопируйте и вставьте следующий фрагмент, чтобы добавить еще несколько записей в базу данных:

db.songs.save(
{album: "Led Zeppelin III", title: "Friends", artist: "Led Zeppelin", year: 1970, length: 235, _key: "friends"}
);

db.songs.save(
{album: "Led Zeppelin III", title: "Celebration Day", artist: "Led Zeppelin", year: 1970, length: 209, _key: "celebration_day"}
);

db.songs.save(
{album: "Led Zeppelin III", title: "Since I've Been Loving You", artist: "Led Zeppelin", year: 1970, length: 445, _key: "since_i_ve_been_loving_you"}
);

db.songs.save(
{album: "Led Zeppelin III", title: "Out On the Tiles", artist: "Led Zeppelin", year: 1970, length: 244, _key: "out_on_the_tiles"}
);

db.songs.save(
{album: "Led Zeppelin III", title: "Gallows Pole", artist: "Led Zeppelin", year: 1970, length: 298, _key: "gallows_pole"}
);

db.songs.save(
{album: "Led Zeppelin III", title: "Tangerine", artist: "Led Zeppelin", year: 1970, length: 192, _key: "tangerine"}
);

db.songs.save(
{album: "Led Zeppelin III", title: "That's the Way", artist: "Led Zeppelin", year: 1970, length: 338, _key: "that_s_the_way"}
);

db.songs.save(
{album: "Led Zeppelin III", title: "Bron-Y-Aur Stomp", artist: "Led Zeppelin", year: 1970, length: 260, _key: "bron_y_aur_stomp"}
);

db.songs.save(
{album: "Led Zeppelin III", title: "Hats Off to (Roy) Harper", artist: "Led Zeppelin", year: 1970, length: 221, _key: "hats_off_to_roy_harper"}
);

Чтение документов

Чтобы получить документ, вы можете использовать либо дескриптор документа, либо + _key +. Использование дескриптора документа требуется только в том случае, если вы не просматриваете саму коллекцию. Имея коллекцию, вы можете использовать функцию + document:

db.songs.document('immigrant_song');
Output{
 "year" : 1970,
 "length" : 143,
 "title" : "Immigrant Song",
 "album" : "Led Zeppelin III",
 "artist" : "Led Zeppelin",
 "_id" : "songs/immigrant_song",
 "_rev" : "11295857653",
 "_key" : "immigrant_song"
}

Теперь, когда мы можем создавать и читать документы, мы рассмотрим, как их изменить:

Обновление документов

Когда дело доходит до обновления ваших данных, у вас есть два варианта: https://docs.arangodb.com/Documents/DocumentMethods.html#replace [+ replace +] и https://docs.arangodb.com/Documents/DocumentMethods .html # обновление [ + обновление +].

Функция + replace + заменит весь документ новым, даже если вы предоставите совершенно другие атрибуты.

Функция + update +, с другой стороны, просто исправит документ, объединив его с заданными атрибутами. Давайте сначала попробуем менее деструктивный + update +, где мы обновим + genre + одной из наших песен:

db.songs.update("songs/immigrant_song",

{ genre: "Hard Rock" }

);

Давайте посмотрим на обновленную запись песни:

db.songs.document("songs/immigrant_song");
Output{
 "year" : 1970,
 "length" : 143,
 "title" : "Immigrant Song",
 "album" : "Led Zeppelin III",
 "artist" : "Led Zeppelin",
 "genre" : "Hard Rock",
 "_id" : "songs/immigrant_song",
 "_rev" : "11421424629",
 "_key" : "immigrant_song"
}

Функция + update + особенно полезна, когда у вас большой документ, и вам нужно обновить только небольшое подмножество его атрибутов.

Напротив, использование того же JSON с функцией + replace + уничтожит ваши данные.

db.songs.replace("songs/immigrant_song",

{ genre: "Hard Rock" }

);

Посмотреть обновленную песню сейчас:

db.songs.document("songs/immigrant_song")

Как видите, исходные данные были удалены из документа:

Output{
 "genre" : "Hard Rock",
 "_id" : "songs/immigrant_song",
 "_rev" : "11495939061",
 "_key" : "immigrant_song"
}

Удаление документов

Чтобы удалить документ из коллекции, вызовите функцию + remove + с дескриптором документа:

db.songs.remove("songs/immigrant_song")

Хотя оболочка + arangosh + является отличным инструментом, она сложна для изучения других возможностей ArangoDB. Далее мы рассмотрим встроенный веб-интерфейс, чтобы углубиться в его возможности.

Шаг 7 - Выполнение операций CRUD с веб-интерфейсом

Мы видели, как обрабатывать документы в + arangosh +, и теперь мы возвращаемся к веб-интерфейсу. Зайдите в браузер + http: //: 8529 / _db / music_library +.

Создать коллекцию документов

Нажмите вкладку * Коллекции * в верхней панели навигации.

Вы можете увидеть существующую коллекцию + songs +, которую мы добавили из командной строки; не стесняйтесь нажимать на него и просматривать записи, если хотите.

На главной странице * Коллекции * нажмите кнопку * Добавить коллекцию *.

изображение: https: //assets.digitalocean.com/articles/arangodb-ubuntu1404/V05LxrP.png [Добавить коллекцию в веб-интерфейсе]

Поскольку у нас уже есть + songs +, мы добавим коллекцию + album +. Введите + album + в качестве * Name * в появившемся диалоговом окне * New Collection *. Тип по умолчанию, * Document *, подходит.

Нажмите * Сохранить *, и вы должны увидеть две коллекции на странице.

Нажмите на коллекцию «+ альбомы +». Вам представлена ​​пустая коллекция:

изображение: https: //assets.digitalocean.com/articles/arangodb-ubuntu1404/d8qIcmh.png [Представление коллекции]

Создание документов

Нажмите на знак * + * в правом верхнем углу, чтобы добавить документ. Сначала вас спросят о + _key +. Введите + led_zeppelin_III + в качестве ключа.

Далее есть форма, где вы можете редактировать содержимое документа. Существует графический способ добавления атрибутов, который называется * Tree *, но сейчас переключитесь на представление * Code *, выбрав его в раскрывающемся меню * Tree *:

изображение: https: //assets.digitalocean.com/articles/arangodb-ubuntu1404/0DfPNao.png [Создать документ]

Скопируйте и вставьте следующий JSON в область редактора (убедитесь, что вы используете только один набор фигурных скобок):

{
"name": "Led Zeppelin III",
"release_date": "1970-10-05",
"producer": "Jimmy Page",
"label": "Atlantic",
"length": 2584
}

Помните, что в этом режиме требуется указывать ключи. Когда вы закончите, нажмите кнопку * Сохранить *. Страница должна на мгновение мигать зеленым, чтобы указать на успешное сохранение.

Чтение документов

Вам необходимо вручную вернуться к странице * Collections * после сохранения нового документа.

Если вы нажмете на коллекцию «+ альбомы +», вы увидите новую запись.

Обновление документов

Чтобы редактировать содержимое документа, просто нажмите на строку, которую вы хотите редактировать в обзоре документа. Вам будет представлен тот же редактор, что и при создании новых документов.

Удаление документов

Удалить документы так же просто, как нажать значок * - * в конце каждой строки документа. Подтвердите удаление, когда будет предложено.

Кроме того, обзорная страница * Collections * для конкретной коллекции позволяет экспортировать и импортировать данные, управлять индексами и фильтровать документы.

Как упоминалось ранее, веб-интерфейс может многое предложить. Освещение каждой функции выходит за рамки данного руководства, поэтому вам предлагается самостоятельно изучить другие функции. В этом уроке мы рассмотрим еще одну особенность: редактор AQL.

Шаг 8 - Запрос данных с помощью AQL

Как упоминалось во введении, ArangoDB поставляется с полноценным языком запросов, который называется AQL.

Для взаимодействия с AQL в веб-интерфейсе щелкните вкладку * AQL Editor * в верхней части навигации. Вам будет представлен пустой редактор.

Для переключения между редактором и представлением результатов используйте вкладки * Query * и * Result * в верхнем правом углу:

изображение: https: //assets.digitalocean.com/articles/arangodb-ubuntu1404/eKTShDh.png [Редактор AQL]

В редакторе есть подсветка синтаксиса, функции отмены и повтора и сохранение запросов. В следующем разделе будут рассмотрены некоторые функции AQL. Для полной ссылки посетите comprehensive документацию.

Основы AQL

AQL - это декларативный язык, означающий, что запрос выражает, какой результат должен быть достигнут, а не как он должен быть достигнут. Это позволяет запрашивать данные, а также изменять данные. Оба подхода могут быть объединены для решения сложных задач.

Чтение и изменение запросов в AQL полностью совместимы с ACID. Операции либо завершатся полностью, либо не завершатся вовсе. Даже чтение данных будет происходить на непротиворечивом снимке данных.

Мы начнем снова с создания данных. Давайте добавим больше песен в нашу коллекцию + songs +. Просто скопируйте и вставьте следующий запрос:

FOR song IN [

{ album: "Led Zeppelin", title: "Good Times Bad Times", artist: "Led Zeppelin", length: 166, year: 1969, _key: "good_times_bad_times" }

,

{ album: "Led Zeppelin", title: "Dazed and Confused", artist: "Led Zeppelin", length: 388, year: 1969, _key: "dazed_and_confused" }

,

{ album: "Led Zeppelin", title: "Communication Breakdown", artist: "Led Zeppelin", length: 150, year: 1969, _key: "communication_breakdown" }

]

INSERT song IN songs

Нажмите кнопку * Отправить *.

Этот запрос уже является хорошим примером того, как работает AQL: вы перебираете список документов с помощью + FOR + и выполняете операцию с каждым из документов. Список может быть массивом с объектами JSON или любой коллекцией в вашей базе данных. Операции включают фильтрацию, изменение, выбор большего количества документов, создание новых структур или (как в этом примере) вставку документов в базу данных. Фактически, AQL также поддерживает все операции CRUD.

Чтобы получить обзор всех песен в базе данных, выполните следующий запрос. Он эквивалентен + SELECT * FROM songs + в базе данных на основе SQL (поскольку редактор запоминает последний запрос, вам нужно щелкнуть значок * мусорная корзина *, чтобы очистить редактор):

FOR song IN songs RETURN song

Теперь вы увидите все записи из базы данных песен в текстовом поле. Вернитесь на вкладку * Query * и снова очистите редактор.

Другой пример включает в себя базовую фильтрацию песен с продолжительностью воспроизведения более трех минут:

FOR song IN songs

FILTER song.length > 180

RETURN song

Результат представлен на вкладке * Result * редактора:

изображение: https: //assets.digitalocean.com/articles/arangodb-ubuntu1404/tFZRf5R.png [Результат запроса]

Сложный пример AQL

AQL поставляется с set functions для всех поддерживаемых типов данных и даже позволяет addition новых функций , В сочетании с возможностью назначать переменные в запросе вы можете создавать очень сложные конструкции. Это позволяет вам перемещать операции с большими объемами данных ближе к самим данным, а не выполнять их на клиенте. Чтобы проиллюстрировать это, мы отформатируем длительность песни как + mm: ss +, чтобы сделать ее удобной для пользователя:

FOR song IN songs

FILTER song.length > 180

LET minutes = FLOOR(song.length / 60)

LET seconds = song.length % 60

RETURN

{ title: song.title, duration: CONCAT_SEPARATOR(':', minutes, seconds) }

На этот раз мы просто вернем название песни вместе с продолжительностью. + RETURN + позволяет вам создать новый объект JSON для возврата для каждого входного документа.

AQL - сложный язык с множеством функций. Но стоит упомянуть еще одну особенность, особенно в контексте баз данных NoSQL: соединения.

Присоединяется к AQL

Использование хранилища документов в качестве базы данных имеет несколько последствий. Вы должны моделировать свои данные иначе, чем при использовании реляционной базы данных.

В хранилище документов у вас есть возможность встраивать данные, которые иначе были бы смоделированы как отношения, но такой подход не всегда осуществим. Есть случаи, когда отношение имеет гораздо больше смысла. Без возможности позволить базе данных выполнять необходимые объединения, вы в конечном итоге присоедините данные на клиенте или денормализуете свою модель данных и внедрите поддокументы. Это становится особенно проблематичным для сложных и больших наборов данных.

Итак, давайте сделаем объединение.

Чтобы проиллюстрировать эту функцию, мы заменим атрибут песен «+ album » на ссылку на коллекцию « album +». Мы уже создали альбом Led Zeppelin III в качестве документа ранее. Пожалуйста вернитесь и повторно добавьте альбом, если вы удалили его во время предыдущего примера.

Этот запрос будет к уловке:

FOR album IN albums

FOR song IN songs

FILTER song.album == album.name

LET song_with_album_ref = MERGE(UNSET(song, 'album'),

{ album_key: album._key }

)

REPLACE song WITH song_with_album_ref IN songs

Сначала мы перебираем все альбомы, а затем ищем все песни, с которыми связан этот альбом. Следующим шагом является создание нового документа, который содержит атрибут + album_key + и + UNSET + атрибут + album +. Мы будем использовать + REPLACE, а не` + UPDATE` для обновления документов песни. Это возможно, потому что мы создали новый документ песни раньше.

После этой миграции данных мы теперь можем хранить документ альбома в одном месте. При получении данных песни мы можем использовать объединение, чтобы снова добавить название альбома в документы песни:

FOR song IN songs

FOR album IN albums

FILTER album._key == song.album_key

RETURN MERGE(song,

{ album: album.name }

)

Мы едва рассмотрели поверхность того, что можно сделать с помощью AQL, но у вас должно сложиться хорошее впечатление о том, что возможно. Для полной ссылки на язык и других примеров, обратитесь к обширной documentation.

(Необязательно) Шаг 9 - Создание резервных копий

Вы должны начать думать о резервном копировании, как только вы запустите базу данных ArangoDB в производство. Однако рекомендуется создавать резервные копии до этого.

Хорошим началом будет использование функции Backup от DigitalOcean. Кроме того, вы можете использовать https://docs.arangodb.com/Arangodump [+ arangodump +] и https://docs.arangodb.com/Arangorestore [+ arangorestore +], чтобы получить более детальную информацию. контролировать, что делать резервные копии и где хранить резервные копии.

(Необязательно) Шаг 10 - Обновление

Когда будет выпущена новая версия ArangoDB, она будет опубликована через настроенное хранилище пакетов. Чтобы установить последнюю версию, вам сначала необходимо обновить индекс репозитория:

sudo apt-get update

Теперь остановите базу данных:

sudo service arangodb stop

Обновите его до последней версии:

sudo apt-get install arangodb

Вам может потребоваться обновить сами файлы базы данных:

sudo service arangodb upgrade

После этого запустите сервер как обычно:

sudo service arangodb start

Расширение ArangoDB с помощью приложений Foxx

Прежде чем закончить, стоит упомянуть еще одну вещь: поскольку ArangoDB имеет встроенный механизм V8 для обработки всего JavaScript и встроенный HTTP-сервер, мы можем расширить существующий HTTP API с помощью пользовательских конечных точек. Эта функциональность называется Foxx.

Foxx - это фреймворк для использования ArangoDB для создания пользовательских микросервисов с постоянными данными. Приложения Foxx написаны на JavaScript и работают в контексте V8 ArangoDB. Приложение имеет прямой доступ к собственному интерфейсу JavaScript и, таким образом, может получать доступ к данным без каких-либо операций HTTP. Foxx предоставляет минимальные рамки в смысле Sinatra для Ruby или Flask для Python. Вы пишете контроллеры для обработки входящих запросов и реализации бизнес-логики внутри моделей.

Приложениями Foxx можно управлять через веб-интерфейс, и их можно разрабатывать, как и любое другое приложение. Вы можете поместить их под контроль версий и даже развернуть их прямо из репозитория Git. Поскольку они являются просто JavaScript, их модульное тестирование является простым. Для простых случаев использования они очень похожи на хранимые процедуры в системе реляционных баз данных, но код Foxx гораздо проще поддерживать и тестировать.

Использование приложений Foxx в качестве хранимых процедур - это только начало. Представьте, что у вас есть несколько приложений, которые разделяют определенную бизнес-логику. С помощью Foxx вы можете приблизить эту бизнес-логику к данным, чтобы ускорить обработку и снизить сложность распределения общей реализации между компонентами. Запуск ArangoDB в качестве кластера даже обеспечивает доступность приложений Foxx для каждого члена кластера.

Даже целые веб-приложения возможны с Foxx. Использование интегрированных сред, таких как Angular или Ember, позволяет вам запускать приложения полностью вне базы данных. Для этого не требуется никакой дополнительной инфраструктуры. В производственной среде вы бы в конечном итоге поставили Nginx или аналогичный продукт перед ArangoDB. ArangoDB поставляется с некоторыми приложениями Foxx, которые предоставляют общие функции, такие как аутентификация и хранилище сеансов. Вы даже можете использовать пакеты npm, если они не зависят от функциональности HTTP.

Для хорошего ознакомления с Foxx, пожалуйста, обратитесь к этому cookbook.

Заключение

ArangoDB - это мощная база данных с широким спектром поддерживаемых вариантов использования. Он в хорошем состоянии и имеет очень хорошую документацию. Начать с ним легко, поскольку есть пакеты для каждой основной операционной системы. Веб-интерфейс снижает нагрузку на изучение возможностей, и если вы работаете с реляционным фоном, использование AQL ничем не отличается от использования SQL.

Имея возможность расширять базу данных с помощью приложений JavaScript и графических функций, сделайте ArangoDB полным пакетом для запуска и развития приложения.

До сих пор мы поделились общей картиной ArangoDB.

В качестве следующих шагов мы предлагаем следующее:

  • Для любого реального приложения вы будете взаимодействовать с HTTP API. Мы не рассмотрели это здесь, потому что вы, скорее всего, не будете использовать его напрямую, но через один из множества драйверов для родного языка https://www.arangodb.com/download].

  • Взаимодействие с данными в ArangoDB осуществляется через AQL большую часть времени. Привыкнуть к этому необходимо, если вы хотите использовать ArangoDB в производственной среде.

  • ArangoDB - это не только хранилище документов, но и очень мощные графические функции. Это позволяет вам моделировать ваши данные как вершины в ориентированном графе. Отношения могут быть смоделированы как ребра между этими вершинами вместо использования ссылок + _key +. Моделирование ваших данных таким способом can иметь преимущества по сравнению с реляционным подходом, используемым в базах данных SQL.

Related