All public logs
Jump to navigation
Jump to search
Combined display of all available logs of MemCP. You can narrow down the view by selecting a log type, the username (case-sensitive), or the affected page (also case-sensitive).
- 21:45, 19 December 2024 Carli talk contribs created page Comparison: MemCP vs. MySQL (Created page with "MemCP has the following advantages over MySQL: * No 64 character limit for column names * uses only 20% of storage compared to InnoDB and MyISAM storage format * supports natural sort (1, 2, 10, 11 instead of 1, 10, 11, 2) with collations * Up to 10x faster query performance for aggregations") Tag: Visual edit
- 20:33, 10 December 2024 Carli talk contribs created page MemCP for Microservices (Created page with "MemCP is a neat database to implement microservices. Here's a code example for a simple key value store: microservice democase: a simple key value store with prepared statements: (import "../lib/sql-parser.scm") (import "../lib/queryplan.scm") initialize database and prepare sql statements: (createdatabase "keyvalue" true) (eval (parse_sql "keyvalue" "CREATE TABLE IF NOT EXISTS kv(key TEXT, value TEXT, UNIQUE KEY PRIMARY(key))")) (set item_get (par...") Tag: Visual edit
- 20:01, 20 November 2024 Carli talk contribs created page MemCP Console (Created page with "There are two ways to access MemCP Scheme Console: a) if you run <code>memcp</code>in the console, just type in your scheme commands b) if you run <code>memcp</code>in docker or pm2 where you don't have access to the console, open a MySQL connection and type <code>SET syntax = 'scheme';</code>and then type in your commands followed by <code>;.</code> In option b) it might be that some commands like (help) output to memcp console instead of your mysql shell. So better...") Tag: Visual edit
- 19:15, 20 November 2024 Carli talk contribs created page Migration from MySQL and PostgreSQL (Created page with "thumb|none|640x640px ===Connection to MemCP via MySQL Connector=== MemCP can be connected with any compatible MySQL connector: $db = new \PDO<code>"mysql:host=localhost;port=3307;dbname=system", 'root', 'admin');</code> echo $db->query("SELECT 'it works'")->fetchColumn(); // outouts: it works ===Import data from MySQL and PostgreSQL=== To import data from MySQL into MemCP, you have to perform the following command in<code>memcp</code>console: (l...") Tag: Visual edit
- 19:12, 20 November 2024 Carli talk contribs deleted page Replace MySQL with MemCP (content was: "thumb|none|640x640px === Connection to MemCP === MemCP can be connected with any compatible MySQL connector: $db = new \PDO<code>"mysql:host=localhost;port=3307;dbname=system", 'root', 'admin');</code> echo $db->query("SELECT 'it works'")->fetchColumn(); // outouts: it works === Import data from MySQL === To import data from MySQL into MemCP, you have to per...", and the only contributor was "Carli" (talk))
- 19:10, 19 November 2024 Carli talk contribs created page Deployment (Created page with "MemCP is relatively easy to deploy. It only requires minimal system requirements (some 10-20 Megabytes of RAM for the base system). There are two deployment methods: === Deployment via pm2 (preferred) === To run memcp, just follow these commands: git clone https://github.com/launix-de/memcp cd memcp go get make # make sure, go is installed pm2 start ./memcp -data ./data/ # use a different path than ./data if you wish; install pm2 If you want to update memcp, just r...") Tag: Visual edit
- 11:36, 31 October 2024 Carli talk contribs undeleted page File:Ports.svg (1 revision and 1 file)
- 11:34, 31 October 2024 Carli talk contribs deleted page File:Https---www.memcp.org-images-0-03-Webapps with MemCP.svg
- 11:31, 31 October 2024 Carli talk contribs uploaded File:Https---www.memcp.org-images-0-03-Webapps with MemCP.svg
- 11:31, 31 October 2024 Carli talk contribs created page File:Https---www.memcp.org-images-0-03-Webapps with MemCP.svg
- 11:27, 31 October 2024 Carli talk contribs uploaded File:Webapps.svg
- 11:27, 31 October 2024 Carli talk contribs created page File:Webapps.svg
- 11:23, 31 October 2024 Carli talk contribs created page File:Webapps with MemCP.svg
- 11:23, 31 October 2024 Carli talk contribs uploaded File:Webapps with MemCP.svg
- 11:21, 31 October 2024 Carli talk contribs deleted page File:Webapps with MemCP.svg
- 11:21, 31 October 2024 Carli talk contribs deleted page File:Ports.svg
- 11:19, 31 October 2024 Carli talk contribs created page File:Webapps with MemCP.svg
- 11:19, 31 October 2024 Carli talk contribs uploaded File:Webapps with MemCP.svg
- 11:18, 31 October 2024 Carli talk contribs deleted page File:MemCP Webapps.png
- 11:04, 31 October 2024 Carli talk contribs uploaded File:Ports.svg
- 11:04, 31 October 2024 Carli talk contribs created page File:Ports.svg
- 11:00, 31 October 2024 Carli talk contribs created page Replace MySQL with MemCP (Created page with "thumb === Connection to MemCP === MemCP can be connected with any compatible MySQL connector: $db = new \PDO<code>"mysql:host=localhost;port=3307;dbname=system", 'root', 'admin');</code>") Tag: Visual edit
- 10:55, 31 October 2024 Carli talk contribs created page File:MemCP Port.png
- 10:55, 31 October 2024 Carli talk contribs uploaded File:MemCP Port.png
- 10:50, 31 October 2024 Carli talk contribs created page File:MemCP Webapps.png
- 10:50, 31 October 2024 Carli talk contribs uploaded File:MemCP Webapps.png
- 10:48, 31 October 2024 Carli talk contribs created page File:Webapps.png
- 10:48, 31 October 2024 Carli talk contribs uploaded File:Webapps.png
- 21:54, 8 October 2024 Carli talk contribs created page Websockets in MemCP (Created page with "In MemCP, you can call <code>(set send ((res "websocket") onReceiveFunction onCloseFunction))</code>to upgrade a http session into a websocket (<code>res</code> is the response object from your http handler, see serve). The <code>onReceiveFunction</code> will take message as it's parameter. <code>onCloseFunction</code> will be called when the socket is closed. You can call <code>(send 1 "my message")</code> to send a string to th...") Tag: Visual edit
- 06:38, 3 June 2024 Carli talk contribs created page File:Explainer.png
- 06:38, 3 June 2024 Carli talk contribs uploaded File:Explainer.png
- 13:20, 26 May 2024 Carli talk contribs created page Advanced Graph Querying (Created page with "== Property Paths == see also: https://en.wikibooks.org/wiki/SPARQL/Property_paths TODO for MemCP: * property/propertypath * propertypath*, propertypath+ (mark&sweep, then iterate over the results) * property? * (propertypath) * ^property (inverse path)") Tag: Visual edit
- 13:12, 20 May 2024 Carli talk contribs created page Contributing (Created page with "Here's how you can contribute: * Go to https://github.com/launix-de/memcp * Build From Source * Add unit tests * Implement more SQL Syntax * Find and report Bugs * Add Passes to the Optimizer") Tag: Visual edit
- 13:02, 20 May 2024 Carli talk contribs created page Database Tools compatibility with MemCP (Created page with "== PHPMyAdmin == no support yet. Read more under: Contributing == DBeaver == Support for: * List Databases * List Tables") Tag: Visual edit
- 11:54, 20 May 2024 Carli talk contribs created page Scan (Created page with "Scan is the most important function in whole MemCP. It implements an optimized, indexed and parallelized <code>for</code> loop over items in a table. There are two variants of scan: <code>scan</code> and <code>scan_order</code>. == (scan schema table filterColumns filter mapColumns map reduce neutral reduce2 isOuter) == Help for: scan === does an unordered parallel filter-map-reduce pass on a single table and returns the reduced result Allowed nø of parameters...") Tag: Visual edit
- 11:41, 20 May 2024 Carli talk contribs created page Data Auto Sharding and Auto Indexing (Created page with "== Auto-Indexing == == Auto-Sharding ==") Tag: Visual edit
- 10:55, 20 May 2024 Carli talk contribs created page Advanced SQL Tutorial (Created page with "== Atomic Counters through Unique Key Checks == Imagine the following table: CREATE TABLE u(id INT PRIMARY KEY, cnt INT); INSERT INTO u VALUES (1, 2), (2, 4); SELECT * FROM u; +------+------+ | id | cnt | +------+------+ | 1 | 2 | | 2 | 4 | +------+------+ '''3 rows in set (0,001 sec)''' If you want to add to <code>cnt</code> whenever an event occurs, add a unique key over <code>id</code> and do the following: INSERT INTO u VALUES (2, 1) O...") Tag: Visual edit
- 14:46, 19 May 2024 Carli talk contribs moved page In-Database WebApps to In-Database WebApps and REST Services
- 10:08, 19 May 2024 Carli talk contribs created page In-Database WebApps (Created page with "In-Database WebApps are a huge game changer in REST API performance since the web app runs in the same context as the == REST Endpoint setup == You basically set up a REST endpoint by overwriting the <code>http_handler</code> variable in the global scope. Best practice is here to overload http_handler, store the old handler in <code>old_handler</code> and cascade the router with a prefix: (define http_handler (begin (set old_handler (coalesce http_handler han...") Tag: Visual edit
- 09:47, 19 May 2024 Carli talk contribs created page SQL over REST (Created page with "There are two methods to do SQL over REST: a) GET method: <code>curl <nowiki>http://root:admin@localhost:4321/sql/</nowiki>[SCHEMA]/[SQL_QUERY]</code> b) POST method: <code>curl -X POST -d '[SQL_QUERY]' <nowiki>http://root:admin@localhost:4321/sql/</nowiki>[SCHEMA]</code> == JSONL results == The result is a <code>jsonl</code> document containing the result lines: curl -X POST -d 'select a, sum(b) as sum_b from a group by a' <nowiki>http://root:admin@localhost:4321/sq...") Tag: Visual edit
- 09:42, 19 May 2024 Carli talk contribs created page Introduction to RDF (Created page with "RDF is the '''Resource Description Format'''. It describes all data in ''Triple Format'': {| class="wikitable" |+ !Subject !Predicate !Object |- |item:1 |a |foaf:Person |- |item:1 |foaf:name |Klaus |- |item:1 |foaf:mbox |klaus@example.com |- |item:1 |foaf:knows |item:2 |- |item:2 |a |foaf:Person |- |item:2 |foaf:name |Dieter |} See also: https://github.com/launix-de/rdfop") Tag: Visual edit
- 09:23, 19 May 2024 Carli talk contribs created page Supported SQL (Created page with "The following SQL statements are supported: * SELECT FROM GROUP BY HAVING ORDER BY LIMIT OFFSET * UPDATE SET WHERE * DELETE FROM WHERE * INSERT INTO VALUES * CREATE TABLE * ALTER TABLE * CREATE DATABASE * CREATE USER * ALTER USER * SHOW DATABASES * SHOW TABLES * SHOW TABLE STATUS * SHOW VARIABLES * SET NAMES (no function) * DROP DATABASE * DROP TABLE * SET SESSION * LOCK TABLES (no function) * UNLOCK TABLES (no function) The following functions are supported: * CASE...") Tag: Visual edit
- 09:04, 19 May 2024 Carli talk contribs moved page Current Status and open issues to Current Status and Open Issues
- 22:07, 17 May 2024 Carli talk contribs created page Process Hibernation (Created page with "MemCP is a In-Memory database. In case you use the <code>memory</code> engine, there is no data stored on disk. <code>criu</code> is an OpenSource project to hibernate processes on linux on disk and restore them later (see https://criu.org/Main_Page). You can hibernate the memcp process with sudo criu dump -t [PID] -j -D [DUMP_DIRECTORY] And reactivate the process with: sudo criu restore -j -D [DUMP_DIRECTORY]") Tag: Visual edit
- 22:02, 17 May 2024 Carli talk contribs created page Settings (Created page with "Settings are changed by: (settings "key" "value") The following settings are available: * <code>"Backtrace"</code>: <code>true</code> or <code>false</code> whether to print backtraces from Scheme. Using true decreases the performance by ~10% but gives you better debugging capabilities. * <code>"PartitionMaxDimensions"</code>: number from 0 to 10 how many partitioning dimensions are allowed at max. 0 means, don't partition shards for values (use it to workaround bugs),...") Tag: Visual edit
- 21:49, 17 May 2024 Carli talk contribs moved page Temporary Columns to Temporary Computed Columns
- 21:48, 17 May 2024 Carli talk contribs created page Temporary Columns (Created page with "Most (or better: all) RDBMS know the concept of so-called „temporary tables“. These tables act as a buffer when complex computations or joins are made and the result has to be sorted afterwards. Temporary tables are also a big loss of performance in daily workloads: Let’s say a table consists of 1,000,000 items and you display them with ORDER BY … LIMIT 100. Because auf some complex join, the 1,000,000 items spanning sorted temptable has to be rendered first and...") Tag: Visual edit
- 21:43, 17 May 2024 Carli talk contribs created page Integer Compression (Created page with "Traditional Database Management Systems use fixed width integers of 32 or 64 bit that are administered by the database operator. MemCP however uses a different approach: according to a data analysis pass, we detect the maximum bit width of an integer to be encoded into our database. This is done by: * finding the smallest integer in a shard * finding the highest integer * <code>offset = smallest</code> * <code>bitwidth = ⌈ld (highest - smallest)⌉</code> * allocate...") Tag: Visual edit
- 21:24, 17 May 2024 Carli talk contribs created page Current Status and open issues (Created page with "There are several TODOs in MemCP still. These are categorized as follows: === Storage Engine === * Allow ALTER TABLE ENGINE = ... * Garbage Collection with an LRU policy on temporary columns * Triggers and change hooks on computed columns * Respect Foreign Keys * Serialize and Deserialize into MMapped big files (these bigfiles must be organized as key-value stores) * iterateIndex: sort delta storage and merge it with main, so that correct order is always guaranteed * m...") Tag: Visual edit
- 18:07, 17 May 2024 Carli talk contribs created page Index Compression (Created page with "== Memory-Efficient Indices for In-Memory Storages == Most databases implement indices as a kind of tree. I will show you that columnar storages can do even better. The most widely used kind of tree structure in databases is the B-Tree. A B-Tree is a n-ary tree whose nodes fit exactly into one „page“ – may it be a cache line of 64 bytes or a HDD page of 512 bytes or a memory page of 4K. The advantage of btrees is that it balances the memory fetch time with the ti...") Tag: Visual edit