Skip to content

Instantly share code, notes, and snippets.

@didlidu
Last active October 31, 2016 12:33
Show Gist options
  • Select an option

  • Save didlidu/da67244e7d36742763bcd71e84043ce2 to your computer and use it in GitHub Desktop.

Select an option

Save didlidu/da67244e7d36742763bcd71e84043ce2 to your computer and use it in GitHub Desktop.

Язык постоения запросов для базы данных типа key-value хранилище.

Ключ - строка. Значение - документ, который может быть строкой, упорядоченным множеством строк, множеством пар строка-строка.

Цель: создание языка запросов для базы данных типа key-value хранилище со следующими возможностями:

  • Создание областей данных
  • Сохранение записей ключ-значение
  • Считывание значения по ключу
  • Считывание набора значений по регулярному выражению ключа
  • Поиск набора значений по параметрам - соответствие, регулярное выражение, количество
  • Операции выборки из значения: элемента списка, словаря
  • Операция определения типа данных значения

Примеры записи данных:

create('mySpace')
!mySpace.insert('key1', 'value1')
!mySpace.insert('key2', 'value 2')
!mySpace.insert('key 3', 'value3')
!mySpace.insert('key4', ['value4.1', 'value4.2', 'value4.3'])
!mySpace.insert('key5', {'subkey1' : 'value5.1', 'subkey2' : 'value5.2', 'subkey3' : 'value5.3'})

Примеры чтения данных:

!mySpace.get('key4')                     || -> ['value4.1', 'value4.2', 'value4.3']
!mySpace.find(key%)                      || -> ['value1', 'value 2', 'value3', ['value4.1', 'value4.2', 'value4.3'], {'subkey1' : 'value5.1', 'subkey2' : 'value5.2', 'subkey3' : 'value5.3'}]
!mySpace.get('key4').type()              || -> list
!mySpace.find(%).where(count value > 2)  || -> [['value4.1', 'value4.2', 'value4.3'], {'subkey1' : 'value5.1', 'subkey2' : 'value5.2', 'subkey3' : 'value5.3'}]
!mySpace.find(key%).at(1)                || -> 'value 2'
!mySpace.find(key%).at(4).get('subkey1') || -> 'value5.1'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment