1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/UDCS-WeavingDB

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

# WeavingDB

Описание проекта

Этот WeavingDB был создан для удовлетворения специальных требований C#-проектов и простого развертывания. Использует B+Tree в качестве индекса для эффективного поиска. База данных с ключ-значением и буферной памятью для таблиц со SQL-запросами.

    1. Поддерживает работу с ключ-значением.
    1. Поддерживает временное хранение в памяти условных запросов к строковым таблицам. (в настоящее время доступна часть функционала строковых таблиц: создание, очистка, вставка, массовая вставка, выборка, условное удаление, модификация).
    1. Можно установить срок годности на основе последнего времени обращения, например: данные A были последний раз использованы час назад, срок годности установлен на 60 минут, тогда данные A будут удалены через 60 минут. Однако если данные A снова будут использованы до истечения этого срока, они не будут удалены. Также можно установить нулевой срок годности (то есть данные никогда не будут автоматически удаляться).
    1. Для работы со строковой таблицей сначала требуется её создание, после чего можно начинать вставлять данные. Колонки базы данных адаптируются автоматически. Первое вставленное значение становится первоначальной колонкой, а следующие значения могут добавлять новые поля или удалять существующие (не требуется заново создавать таблицу). Однако типы полей не могут меняться; если попытаться изменить тип существующего поля, возникнет ошибка типа. Чтобы изменить тип поля, потребуется полностью очистить таблицу и заново её создать.
    1. Поддерживает долговременное хранение данных ключ-значение. Данные не удаляются окончательно при истечении срока действия или вызове метода Remove, а лишь удаляются из памяти. При повторном обращении к данным они будут восстановлены из долговременного хранилища.
    1. Поддерживает условные запросы, сортировку, удаление и обновление данных с помощью SQL-запросов, возможность создания индексов вручную для повышения производительности поиска.
    1. Часть данных передачи реализована с использованием WeavingSocket-архитектуры. Адрес архитектуры передачи данных: https://gitee.com/dreamsfly900/universal-Data-Communication-System-for-windows

Инструкции по использованию

Пример использования чтения и записи ключ-значение:

DBClient dbc = new DBClient("127.0.0.1", 18989, "admin", "123123");  
dbc.Open();  
dbc.Set<String>("asdasd", "1"); // Установка  
int i = 0;  
String str2 = dbc.Get<String>("asdasd"); // Чтение  
string[] keys = dbc.GetKey("as?asd"); // Шаблон ? представляет один символ  
keys = dbc.GetKey("as*"); // Шаблон * представляет несколько символов  

Hashtable ht = new Hashtable();  
ht.Add("123123", "afasdfasdf");  
ht.Add("12312311", "afasdfasdf");  
ht.Add("1231231221", "afasaasdfasdf");  
ht.Add("123123122199", "afasaasdfasdf");  
bool bb = dbc.SetAll<string>(ht); // Массовое установление значений  
dbc.Close();  

Пример операций JSONDB: создание таблицы, вставка записей, массовая вставка записей, обновление таблицы, удаление таблицы, очистка таблицы.

dbc.Open();  
User u = new User();  
bool bbc = dbc.InsertTable<User>("ddd", u);  
dbc.CreateTable("ddd"); // Создание таблицы  

bbc = dbc.InsertTable<User>("ddd", u); // Вставка объекта  

// Каждый раз вставляем группу данных  
List<User> list = new List<User>();  

i = 0;  
while (i < 10000)  
{  
u = new User();  
u.Id = i;  
list.Add(u);  
i++;  
}  
DateTime dt = DateTime.Now;  
bbc = dbc.InsertTable<User>("ddd", list.ToArray()); // Массовая вставка данных  

DateTime dt2 = DateTime.Now;  
ListBox1.Items.Add("Вставка 10000 записей за " + (dt2 - dt).TotalMilliseconds + " миллисекунд.");  

dbc.UpdateTable("ddd", "Id<10", new { Name = "Специальное сообщение" }); // Условное обновление, условия могут быть пустыми  
int count = 0;  

dt = DateTime.Now;  

var rrs = dbc.SelectTable<List<User>>("ddd", "Id<100", 0, "", 0, 0, out count); // Условное получение данных, условия могут быть пустыми  

dt2 = DateTime.Now;  
ListBox1.Items.Add("Запрос SQL данных за " + (dt2 - dt).TotalMilliseconds + " миллисекунд." + "Количество записей:" + rrs.Count);  

dbc.DeleteTable("ddd", "Id<100"); // Условное удаление данных, условия не могут быть пустыми  

dbc.RemoveTable("ddd");  
dbc.Close();  

Тестирование производительности

  • Тестирование производительности ключ-значение, 10000 операций чтения и записи за 1.8 секунды, конфигурация I5 8ГБ 128ГБ 500ГБ настольного компьютера

  • Тестирование производительности ключ-значение, 10000 операций чтения и записи за 1.8 секунды, конфигурация SURFACEBOOK 1 поколение 8ГБ 128ГБ

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
C# и 3 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/UDCS-WeavingDB.git
git@api.gitlife.ru:oschina-mirror/UDCS-WeavingDB.git
oschina-mirror
UDCS-WeavingDB
UDCS-WeavingDB
new