ДЕМО
LEVEL 1
Документо-ориентированная
{
"_id": "5c5014569fa4f109c4c310eb26001157",
"_rev": "1-6e67347a1a2d73a89b5b8fab2060083a",
"type": "host",
"label": "dev server",
"host": "dev.example.com",
"username": "root",
"password": "smalldick",
"platform": "ubuntu",
"port": 22,
"tags": [
"dev",
"ubuntu",
"aws"
],
"groups": [
"home",
"dev"
]
}
REST API
$ curl http://localhost:5984/hosts/003EB430-4C46-0FA1-8669-A600D0D92C87
{
"_id": "003EB430-4C46-0FA1-8669-A600D0D92C87",
"_rev": "1-6e67347a1a2d73a89b5b8fab2060083a",
"type": "host",
"label": "dev server",
"host": "dev.example.com",
"username": "root",
"password": "smalldick",
"platform": "ubuntu",
"port": 22,
"tags": [
"dev",
"ubuntu",
"aws"
],
"groups": [
"home",
"dev"
]
}
$ curl -X DELETE http://localhost:5984/hosts/003EB430-4C46-0FA1-8669-A600D0D92C87
LEVEL 2
Хранение и запись
-
MVCC
-
append only
-
версионирование
-
Неубиваемый файл БД
Blob'ы
HARD MODE
Master-Master репликация
Map/Reduce/Views
# Tags
(doc, request) ->
if doc.type == 'host'
for tag in doc.tags
emit(doc._id, tag)
# Filter: hosts
(doc, request) ->
return doc.type == 'host'
# Validation function
(newDoc, oldDoc, userCtx) ->
if doc.type == 'host'
if not isNumber(doc.host)
throw({forbidden: message});
Overload
Поток
-
Репликации
-
Подписка на изменения
-
Аутентификация
-
Конфликты
-
CouchApps
- .....
CouchDB 2.0
Выводы
The end
«Превосходство CouchDB»
By Egor Yurtaev
«Превосходство CouchDB»
- 390