Единственный способ создать правильно динамическую таблицу - это иметь имена столбцов, равные ключам объекта. Тогда вы можете зациклить свойства объекта по именам столбцов внутри массива данных. Вот небольшой пример.
<table>
<thead>
<tr>
<th *ngFor="let col of data.ColumnNames">{{ col }}</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let row of data.Rows">
<td *ngFor="let col of data.ColumnNames">
{{ row.Cells[col].Data }}
</td>
</tr>
</tbody>
</table>
Конечно, вы можете усложнить имена столбцов и получить объект, например:
{
columnName: 'Valid Date',
dataKey: 'date_validite'
}
И цикл мысли массив таких столбцов. Это зависит от вас. Я надеюсь, что вы поймете основную идею.
Вы не упоминали, какая платформа Вы идете, но если Windows только в порядке, смотрите на Расширяемый Механизм устройства хранения данных (ранее известный как Струйный Синий), встроенный механизм таблицы ISAM, включенный в Windows 2000 и позже. Это используется для Active Directory, Exchange и другие внутренние компоненты, оптимизировали для небольшого количества больших таблиц.
Это имеет интерфейс C и поддерживает двоичные типы данных исходно . Это поддерживает индексные , транзакции и использует журнал для обеспечения атомарности и длительности. Нет никакого языка запросов; необходимо работать с эти индексы таблиц и непосредственно сами.
ESE не любит открывать файлы по сети и не поддерживает совместное использование базы данных посредством совместного доступа к файлам. Вы собираетесь быть трудно нажатыми для нахождения любого механизма базы данных, который поддерживает совместное использование посредством совместного доступа к файлам. Струйный механизм базы данных Доступа (иначе Струйная Красная, полностью отдельная кодовая база) является единственным, о котором я знаю, и это известно за повреждение файлов по сети, особенно если они являются большими (> 100 МБ).
Безотносительно механизма, который Вы используете, необходимо будет, скорее всего, реализовать общие функции использования сами в собственном сетевом сервере, обрабатывают или используют дискретный механизм базы данных.
Я верю тому, что Вы ищете, BerkeleyDB: http://www.oracle.com/technology/products/berkeley-db/db/index.html
Не берет в голову, что это - Oracle, лицензия является бесплатной, и это - открытый исходный код - единственная выгода - то, что при перераспределении программного обеспечения, которое использует BerkeleyDB, необходимо сделать источник доступным также - или купить лицензию.
Это не обеспечивает поддержку SQL, а скорее прямые поиски (через B-дерево или структуру хеш-таблицы, какой бы ни имеет больше смысла для Ваших потребностей). Это чрезвычайно надежно, быстро, ACID, имеет встроенную поддержку репликации, и так далее.
Вот маленькая кавычка от страницы, которую я отсылаю к вышеупомянутому, который перечисляет несколько функций:
Хранение данных
Беркли DB хранит данные быстро и легко без издержек, найденных в других базах данных. DB Беркли является библиотекой C, которая работает в том же процессе как Ваше приложение, избегая задержек межпроцессного взаимодействия использования удаленного сервера базы данных. Общие кэши сохраняют самые активные данные в памяти, избегая дорогостоящего доступа к диску.
- Локальное, незавершенное хранение данных
- Нейтральный в отношении схемы, собственный формат данных приложения
- Индексируемое и последовательное извлечение (B-дерево, Очередь, Recno, Хеш)
- Несколько процессов на приложение и несколько потоков для каждого процесса
- Мелкомодульная и настраиваемая блокировка для очень параллельных систем
- Управление совместным выполнением мультиверсии (MVCC)
- Поддержка вторичных индексов
- В оперативной памяти, на диске или оба
- уплотнение B-дерева Онлайн
- восстановление дискового пространства B-дерева Онлайн
- заброшенное удаление блокировки Онлайн
- На дисковом шифровании данных (AES)
- Записи до 4 ГБ и таблицы до 256 ТБ
Обновление: Просто натыкался на этот проект и думал о вопросе, который Вы отправили: http://tokyocabinet.sourceforge.net/index.html . Это находится под LGPL, таким образом, не совместимый с Вашими ограничениями, но интересным проектом проверить, тем не менее.
Одна опция могла быть Firebird. Это предлагает обоим серверный продукт, а также встроенный продукт.
Это - также открытый исходный код и существует большое количество поставщиков для всех типов языков.
SQLite соответствовал бы тем критериям, за исключением возможного сценария совместно используемого файла в будущем (и на самом деле это могло, вероятно, сделать это к тому, если сетевая файловая система реализует блокировки файла правильно).
Были упомянуты много хороших решений (таких как SQLite). Позвольте мне добавить два, так как Вы не требуете SQL:
, я протестировал обоих на многомиллионных проектах записей.
SQLite имеет тенденцию быть первой опцией. Это не хранит данные как строки, но я думаю, что необходимо создать команду SQL, чтобы сделать, вставка и та команда будут иметь некоторое строковое здание.
BerkeleyDB является хорошо спроектированным продуктом, если Вам не нужен relationDB. Я понятия не имею, что Oracle взимает за него и если Вам была бы нужна лицензия на Ваше приложение.
Лично я рассмотрел бы, почему у Вас есть некоторые Ваши требования. Вы сделали тестирование для проверки требования, чтобы Вы сделали прямую вставку в базу данных? Кажется, что Вы могли занять несколько часов для описывания обертки, которая преобразовывает из любого API, который Вы хотите к SQL и затем видите, отвечают ли SQLite, MySql... Вашим требованиям скорости.
Поскольку вы знакомы с Fairtree, то вы, вероятно, также знакомы с Raima RDM.
Он стал открытым исходным кодом несколько лет назад, затем dbstar заявили, что они каким-то образом приобрели авторские права. Хотя это кажется спорным. Судя по оригинальной лицензии Raima, это кажется невозможным. Конечно, можно остаться с исходной версией кода. Это довольно редко, но у меня есть копия.
Раньше был продукт под названием b-trieve, но я не уверен, был ли включен исходный код. Думаю, его сняли с производства. Единственный известный мне движок базы данных с ориентацией на ISAM - это c-tree.