Сейчас на форуме: UniSoft, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Базы данных своими руками. |
Посл.ответ | Сообщение |
|
Создано: 01 февраля 2011 03:12 · Поправил: Nimnul · Личное сообщение · #1 Привет, В последнее время занимаюсь разработкой своей BD+ORM не знаю кто в теме кто нет. Вкратце это отсутствие всяких тексто-подобных запросов. БД идет в более тесном контакте с кодом, за счет этого можно достичь более высокой производительности. Скажем есть класс таблицы, сами данные хранятся на винте и через мапинг файла в памяти, происходит основная работа с ним. В этот класс заранее добавляются классы индексов, например индекс последовательного доступа, или индекс сортированного доступа, или фильтрованного, или композитного. Фишка в том, что эти индексы строятся не в момент запроса, а походу поступления новых данных. Что позволяет иметь мгновенную сортировку\поиск\фильтр в любой момент времени. Посоветуйте как лучше организовать хранение one-to-many данных в файле. Скажем под неким int32 ключом был список, других int32 значений. При этом нужно учитывать что список этот может расширятся. Ключи могут удаляться, вставляться, добавляться и т.д. У меня есть кое какие мысли на этот счет, но вобщем интересны любые мнения. И второе алгоритм хранения деревьев в плоском виде, что бы можно было максимально быстро делать вставки, удаление, ну и конечно получение значения по ключу. Хотя можно и не в плоском виде, или скорее в псевдо-плоском с указателями(позициями), ведь файл это тоже самое что одномерный массив. ----- have a nice day |
|
Создано: 01 февраля 2011 10:13 · Поправил: Soronorus · Личное сообщение · #2 а на чём вояешь ?? просто участвовал в одном проекте мы под зендом_db свояли. скажи каким способом ты отображаешь постоянные объекты: активная запись или шлюз данных? по конструкции данных один ко многим: ты хочешь своять свою структуру?, было решение основанное на матрице инцидентности Каждая строка соответствует определённой вершине, а столбцы соответствуют связям графа. на с++ была либа Boost Graph в общих чертах это: В ячейку на пересечении i-ой строки с j-м столбцом матрицы записывается: 1 в случае, если связь j «выходит» из вершины i, −1, если связь «входит» в вершину, 0 во всех остальных случаях (то есть если связь является петлёй или связь не инцидентна вершине) если нужен примерчик Пример выполнения алгоритма топологической сортировки Code:
если я тебя не правильно понял сорри | Сообщение посчитали полезным: Nimnul |
|
Создано: 01 февраля 2011 13:12 · Поправил: Promix_17 · Личное сообщение · #3 Nimnul пишет: И второе алгоритм хранения деревьев в плоском виде, что бы можно было максимально быстро делать вставки, удаление, ну и конечно получение значения по ключу. Хотя можно и не в плоском виде, или скорее в псевдо-плоском с указателями(позициями), ведь файл это тоже самое что одномерный массив. Используй пирамидальную структуру данных - массив, который можно рассматривать как почти полное бинарное дерево. в корне дерева - первый элемент массива. Если узлу соответствует индекс i, то индекс его родительского узла (int) i/2,левого дочернего - 2*i, правого дочернего - 2*i+1. | Сообщение посчитали полезным: Nimnul |
|
Создано: 02 февраля 2011 01:28 · Поправил: Nimnul · Личное сообщение · #4 Soronorus пишет: а на чём вояешь ?? C# Soronorus пишет: скажи каким способом ты отображаешь постоянные объекты: Если коротко то коллекцией, можно даже сказать массивом . Данные хранятся в файле который устроен страничным образом. У каждой страницы есть уникальный номер, оффсет на самом деле. Доступ к данным осуществляется через эти самые индексы о которых я говорил(последовательный, сортированный и т.д.). Индекс оперирует с номерами страниц. one-to-one, index-to-page или мап page-to-index. Так же предусмотрен кэш. Что бы не лазить на винт лишний раз. Soronorus пишет: было решение основанное на матрице инцидентности Каждая строка соответствует определённой вершине, а столбцы соответствуют связям графа. на с++ была либа Boost Graph Если я правильно понял, это разновидность BST деревьев? Не сбалансированные деревья и графы жрут много памяти. Soronorus пишет: по конструкции данных один ко многим: ты хочешь своять свою структуру?, Да свою структуру, поскольку каждый элемент подмножества должен возвращаться по номеру за разумное время . Короче я думаю что структура будет массив массивов, и возможно нефиг тут больше выдумывать. Единственное останется как максимально оптимально его хранить в плоском виде. Или я еще думал каждое подмножество хранить в отдельном файле. Promix_17 Так и поступлю. ----- have a nice day |
eXeL@B —› Программирование —› Базы данных своими руками. |