48 / 48 / 24
Регистрация: 29.10.2011
Сообщений: 154
1

key-value база данных

27.11.2013, 00:54. Показов 894. Ответов 4
Метки нет (Все метки)

Есть интерфейс к БД:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Database {
public:
    Database();
    ~Database();
 
    int open(const std::string path, 
        DatabaseOpenMode mode,
        uint64_t hashTableSize,
        uint64_t keySize,
        uint64_t valueSize);
 
    int get(const void * key, void * buffer);
    int put(const void * key, const void * value);
    void close();
private:
    void dbClose(DatabaseInfo * dbInfo);
    DatabaseInfo * m_dbInfo;
};
1) Чем можно заменить void*.
2) get принимает key и буфер, в который будет записано value. Но передавать буфер, это как-то криво, на мой взгляд, что можно с этим сделать (void* возвращать тоже не хочется).
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2013, 00:54
Ответы с готовыми решениями:

Ошибка при работе с указателем! (key[0]->pr) x006790b8 {size=3 d=2 key=0x0067dcc8 {0xfdfdfdfd {pr=? }
#ifndef DHEAP_H #define DHEAP_H #include <iostream> #include <locale.h> #include <cmath>...

Удалённая база данных - запрос и вывод данных
допустим у меня есть удалённая база данных в которой хранятся данные. можно ли через программу...

Учебная база данных. Не позволяет создать foreign key
Всем добрый вечер! Нужно учебную базу данных. ER-модель была сделана в MYSQL Workbench 6.0,...

База данных, основанная на службах vs База данных SQL Server
Доброго времени суток. Делал я, значит, Data Access Layer для ASP.NET MVC проекта. Создал обычную...

4
3174 / 1933 / 313
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
27.11.2013, 04:08 2
Цитата Сообщение от YouDoItWrong Посмотреть сообщение
криво, на мой взгляд
Это у вас взгляд кривой. В интерфейсе все правильно.
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
27.11.2013, 10:55 3
Цитата Сообщение от YouDoItWrong Посмотреть сообщение
1) Чем можно заменить void*.
Можно char*. Но главное - зачем? void* - это обобщенный указатель, который говорит, что тип данных неизвестен.
Цитата Сообщение от YouDoItWrong Посмотреть сообщение
передавать буфер, это как-то криво
А что бы Вы хотели передавать?
1
48 / 48 / 24
Регистрация: 29.10.2011
Сообщений: 154
27.11.2013, 12:24  [ТС] 4
Эм… Я думал, может быть, существует «более красивое решение», чем передавать голый указатель. Ну да ладно, спасибо за ваши ответы.
0
574 / 557 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
27.11.2013, 12:29 5
YouDoItWrong, если тип ключа известен, то, как минимум, это убирает половину void*
какие типы данных планируется читать/писать в бд? может ли так получится, что для некоторого типа данных необходимо будет делать дополнительные действия?
всегда есть шаблоны, которые заменят void* на T*
в каком месте будет идти каст после вызова метода get?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2013, 12:29
Помогаю со студенческими работами здесь

#1170 - BLOB/TEXT column 'id' used in key specification without a key length
После выполнения этого кода: CREATE TABLE forum_themes( id TINYTEXT, name TINYINT, autor_name...

Violation of Primary key constraint 'PK_otdel'. Cannot insert dupllicate key in object 'dbo.otdel'.
void __fastcall TAddOtdForm::AddOtdButton1Click(TObject *Sender) { int kodotd;...

Что значит данный код, а точнее key:={'+key+'}
begin result:=key; key:= AnsiLowerCase(key); if length(key)>1 then begin...

Оптовая база: База данных!
Для оптовой базы требуется разработать информационную систему, позво- ляющую обрабатывать данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru